使用Neo4j嵌入式数据库和JDBC Bolt驱动程序进行Spring Boot测试

时间:2018-09-01 23:11:03

标签: java spring neo4j

是否可以像使用H2内存数据库模拟Oracle数据库一样连接到嵌入式Neo4j数据库?

我试图这样做:

TypeTable[] = {
    { "NULL",       NILSXP     },  /* real types */
    { "symbol",     SYMSXP     },
    { "pairlist",   LISTSXP    },
    { "closure",    CLOSXP     },
    { "environment",    ENVSXP     },
    { "promise",    PROMSXP    },
    { "language",   LANGSXP    },
    { "special",    SPECIALSXP },
    { "builtin",    BUILTINSXP },
    { "char",       CHARSXP    },
    { "logical",    LGLSXP     },
    { "integer",    INTSXP     },
    { "double",     REALSXP    }, /*-  "real", for R <= 0.61.x */
    { "complex",    CPLXSXP    },
    { "character",  STRSXP     },
    { "...",        DOTSXP     },
    { "any",        ANYSXP     },
    { "expression", EXPRSXP    },
    { "list",       VECSXP     },
    { "externalptr",    EXTPTRSXP  },
    { "bytecode",   BCODESXP   },
    { "weakref",    WEAKREFSXP },
    { "raw",        RAWSXP },
    { "S4",     S4SXP },
    /* aliases : */
    { "numeric",    REALSXP    },
    { "name",       SYMSXP     },

    { (char *)NULL, -1     }
};

然后使用具有以下spring.datasource配置的JDBC Bolt驱动程序发出请求:

final BoltConnector boltConnector = new BoltConnector("bolt");
graphDb = new GraphDatabaseFactory()
        .newEmbeddedDatabaseBuilder(DB_PATH)
        .setConfig(boltConnector.type, BOLT.name())
        .setConfig(boltConnector.enabled, TRUE)
        .setConfig(boltConnector.listen_address, listenAddress("127.0.0.1", 7688))
        .setConfig(boltConnector.encryption_level, DISABLED.name())
        .setConfig(GraphDatabaseSettings.auth_enabled, FALSE)
        .newGraphDatabase();

但是我总是收到以下错误:

spring:
  profiles: test
  datasource:
    driver-class-name: org.neo4j.jdbc.bolt.BoltDriver
    url: jdbc:neo4j:bolt://127.0.0.1:7688/?nossl

当然,当我使用Unable to connect to 127.0.0.1:7688, ensure the database is running and that there is a working network connection to it. 实例并对它执行请求时,嵌入式数据库就可以工作。但是我希望我的应用程序像连接到远程Neo4j数据库一样,连接到嵌入式数据库。 这是出于测试目的。

1 个答案:

答案 0 :(得分:0)

我终于RTFM ...
我的pom.xml中具有以下依赖项:

<dependency>
    <groupId>org.neo4j</groupId>
    <artifactId>neo4j</artifactId>
    <version>3.4.0</version>
</dependency>

然后我发现了这个:https://neo4j.com/docs/java-reference/current/tutorials-java-embedded/#tutorials-java-embedded-bolt 该文档有些过时,因为它使用了已弃用的配置。但他们对此进行了解释:

  

Neo4j浏览器和官方Neo4j驱动程序使用Bolt数据库   与Neo4j通信的协议。默认情况下,Neo4j Embedded执行   不暴露Bolt连接器,但是您可以启用一个。这样做允许   您可以将服务Neo4j Browser连接到嵌入式实例。

他们明确指出要使用的正确依赖项是:

<dependency>
    <groupId>org.neo4j</groupId>
    <artifactId>neo4j-bolt</artifactId>
    <version>3.4.0</version>
</dependency>