大家好!
我已经开发了一个JavaFX应用程序来支持我的科学工作(分子生物学/神经药理学),在版本2.x时实现Neo4j。
现在,由于版本3(使用3.1.0-M05)已经发布,我将使用Driver(1.1.0-M01)接口切换到数据库的Bolt协议访问。我的应用程序的某些功能仍然需要Java API访问,所以我不能完全放弃旧代码。我正在使用单例GraphDatabaseFactory来启动数据库,如此
private static GraphDatabaseService instance;
private GraphDb() {
instance = new GraphDatabaseFactory().newEmbeddedDatabaseBuilder(new File(FilePaths.DATABASE_PATH))
.setConfig(ShellSettings.remote_shell_enabled, "true").newGraphDatabase();
}
public static synchronized GraphDatabaseService getInstance() {
return instance;
}
(或者只是.newEmbeddedDatabase()
)但是现在,从版本3开始,我还使用单例驱动程序实例进行Bolt交互,就像这样
private static Driver instance;
private GraphDbDriver() {
startLocalDb();
instance = GraphDatabase.driver("bolt://localhost");
}
private static void startLocalDb() {
//start database here?
}
public static synchronized Driver getInstance() {
return instance;
}
我现在的问题是,这是因为我认为同时使用两者只能繁殖并发症:我如何使用这两种与数据库通信的方式而不会妨碍彼此?
我可以以某种方式让驱动程序加载到已创建的GraphDatabaseService单例吗?
感谢阅读!
答案 0 :(得分:1)
因此,对于任何感兴趣的人,在Neo4j 3.x中,建议使用“用户定义的过程”来实现API命令(例如,遍历),然后从(通过CALL
)调用它暗号。