前面一章我们使用Spring Data以Http的形式访问Neo4j,但是发现用不了内置的强大Api。在SDN官方文档中发现有embedded-driver。下面我们尝试着使用下该驱动。
搭建环境(基于上一章的项目)
1、添加embedded-driver依赖
...
2.0.3
3.1.0-M03
...
...
org.neo4j
neo4j-ogm-embedded-driver
${ogm-version}
org.neo4j
neo4j
...
2、修改Neo4jConfig
public org.neo4j.ogm.config.Configuration getEmbeddedConfiguration(){
org.neo4j.ogm.config.Configuration config = new org.neo4j.ogm.config.Configuration();
config.driverConfiguration()
.setDriverClassName("org.neo4j.ogm.drivers.embedded.driver.EmbeddedDriver")
.setURI("file:///opt/neo4j-community-3.0.3/data/databases/graph.db");
return config;
public SessionFactory getSessionFactory() {
* 如果不指定节点映射的java bean路径,保存时会报如下警告,导致无法将节点插入Neo4j中
* ... is not an instance of a persistable class
return new SessionFactory(getEmbeddedConfiguration(), "cn.didadu.sdn.entity");
其实,只是改下DriverClassName和URI,就把Remote模式改成Embedded模式了,跑一下testGetUserByName(),程序正常运行。但是,就算改成Embedded,依然还是用的Spring Data的模板,GraphDatabaseService在哪里?下面我们就把GraphDatabaseService找出来。
3、再次修改Neo4jConfig
public GraphDatabaseService graphDatabaseService(){
EmbeddedDriver embeddedDriver = (EmbeddedDriver) Components.driver();
return embeddedDriver.getGraphDatabaseService();
4、修改UserService类
private GraphDatabaseService graphDatabaseService;
public Node getUserById(Long id){
return graphDatabaseService.getNodeById(id);
5、修改测试类UserServiceTest
public void testGetUserById(){
Node node = userService.getUserById(89l);
System.out.println(node);
至此,Spring Data Neo4j的相关内容算了解过了,下面把示例项目改造下,分成Remote和Embedded两个项目,并且把之前的例子都整合到Embedded项目中,具体过程就不贴出来了,给出Github链接。