学习笔记十:Spring Data Neo4j--Embedded Driver

1,656 阅读1分钟
原文链接: bboyjing.github.io

前面一章我们使用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链接