java - SDN 4.2 嵌入式 Autowiring Neo4j OGM session

标签 java spring spring-data-neo4j spring-data-neo4j-4 neo4j-ogm

在 SDN 4.1 引用中,配置包括扩展 Neo4jConfiguration 并将 Session 对象显式设置为 @Bean。在 4.2 中,指导是不要扩展 Neo4jConfiguration 并遵循以下配置。请注意,没有明确设置独立的 Session 对象:

@Bean
public org.neo4j.ogm.config.Configuration configuration() {
    org.neo4j.ogm.config.Configuration config = new org.neo4j.ogm.config.Configuration();
    config
            .driverConfiguration()
            .setDriverClassName("org.neo4j.ogm.drivers.embedded.driver.EmbeddedDriver")
            .setURI(dbLocation);
    return config;

@Bean
public SessionFactory sessionFactory() {
    SessionFactory sessionFactory = new SessionFactory(configuration(), "org.my.package" );
    sessionFactory.register(new MyPreSaveListener());
    return sessionFactory;
}

我已经看到在存储库类中 @Autowiring Session 对象本身(而不是工厂)时使用了此配置。这是否意味着应用程序中将只有一个 Session 实例?如果是这样,这是否违背了 session 生命周期应限于应用程序的“工作单元”的想法?

请注意,我的存储库是自定义的,不会扩展 neo4j 存储库,因为我目前正在不再使用 Neo4jTemplate 对象。

最佳答案

不,每个应用程序没有一个 session 。只要从 @Transactional 注释或 TransactionTemplate 中调用您的 Session,它就会调用代理 Session (由 Spring Data Neo4j 框架在启动期间生成)。这将有效地在事务的生命周期(它被划分的地方)创建一个 session ,并且一旦超出范围,就允许它被垃圾收集。

关于java - SDN 4.2 嵌入式 Autowiring Neo4j OGM session ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42676007/

相关文章:

java - 执行自定义 native 查询时无法提取 ResultSet

java - bolt 比 http 有什么优势,为什么我们更喜欢 bolt,

java - Spring Cloud微服务,与其他微服务一起使用受密码保护的微服务

java - CORBA 的 Spring 批处理机制

Java:通用 ArrayLists 是否比 LinkedLists 迭代速度更快?

java - Thymeleaf 迭代列表

java - 大数据集的 Spring data/Neo4j 路径长度

java - Kotlin 方法上使用的 Java 注释的 getAnnotation 返回 null

java - 当在 jetty 运行的 Web 项目中使用 HttpClient 时,我遇到了 InitationTargetException

java - 使用 + 连接字符串总是一个坏主意吗