同时使用Neo4j的bolt驱动程序和Java API

时间:2016-08-09 16:42:39

标签: java neo4j

大家好!

我已经开发了一个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单例吗?

感谢阅读!

1 个答案:

答案 0 :(得分:1)

因此,对于任何感兴趣的人,在Neo4j 3.x中,建议使用“用户定义的过程”来实现API命令(例如,遍历),然后从(通过CALL)调用它暗号。