Spring Data Neo4j使用OGM Session在运行时选择数据库

问题描述

我正在尝试实现一个Spring应用程序,该应用程序连接到具有多个数据库的单个neo4j实例(4.0+)。 我想在运行时动态选择一个数据库,以使用OGM Session来执行我的操作,因为我发现用例中的save()方法很方便。 我通过使用SessionFactory成功实现了这一点:

public SessionFactory createSessionFactory(String database) {
    Configuration configuration = new Configuration.Builder()
            .uri(properties.getUri())
            .credentials(properties.getUsername(),properties.getpassword())
            .database(database)
            .verifyConnection(true)
            .build();
                
    return new SessionFactory(configuration,"my.package.domain");
}

并在我的自定义存储库的每种方法中打开一个会话:

public void createNode(String database,String param) {
    SessionFactory sessionFactory = createSessionFactory(database);
    Session session = sessionFactory.openSession();
    session.save(new MyNode(param));
    sessionFactory.close();
}

对于每个存储库方法,创建SessionFactory(还会创建Driver吗?),打开Session并将其关闭后的过程 似乎有点复杂。我这样做正确吗?

我还查看了有关多租户的这篇文章https://medium.com/neo4j/reactive-multi-tenancy-with-neo4j-4-0-and-sdn-rx-d8ae0754c35,想知道这是否是我从未使用过的方法。 我应该指出,我们需要每个用户一个“个人”数据库​​以及一个“组”数据库来存储多个用户的数据。保存在“个人”数据库​​中的任何实体也应保存在与相应用户关联的“组”数据库中。我可以在文章中看到我们静态创建了具有关联角色的UserDetails。是否可以动态地执行此操作,以便根据发送请求的用户自动选择应在其上执行操作的数据库

谢谢您的帮助!

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)