如何解决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 举报,一经查实,本站将立刻删除。