大家好!
我开发了一个JavaFX应用程序来支持我的科学工作(分子生物学/神经药理学),实现了Neo4j,当时版本为2.x。
现在,由于版本3(使用3.1.0-M05)已经过时,我将切换到数据库的Bolt协议访问,并使用驱动程序(1.1.0-M01)接口。不过,我的应用程序的某些功能仍然需要Java访问,所以我不能完全放弃旧代码。我使用单例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版开始,我还使用了一个单例驱动实例来进行螺栓交互,如下所示
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;
}我现在的问题是,这是(既然我认为同时使用这两种方式只会产生并发症):我如何使用这两种方式与DB通信,而不妨碍它们之间的相互影响?
我能让驱动程序“加载”已经创建的GraphDatabaseService单例吗?
感谢您的阅读!
发布于 2016-08-17 14:14:15
因此,对于对Neo4j 3.x感兴趣的人,建议使用“用户定义的过程”来实现API命令(例如遍历),然后(通过CALL)从密码调用它。
https://stackoverflow.com/questions/38856283
复制相似问题