您现在的位置:首页 >> 基础 >> Java编程 >> 内容

Spring Boot 访问Neo4j--Java学习网

时间:2016-12-3 13:00:49

  核心提示:在Spring Boot中访问Neo4j,通过Spring Data Neo4j可以轻易地实现。例如,现有如下图所示的数据模型:这表示有两个节点:用户和组,并且这两个节点的关系是从属关系,即用户从属于...

在Spring Boot中访问Neo4j,通过Spring Data Neo4j可以轻易地实现。

例如,现有如下图所示的数据模型:

这表示有两个节点:用户和组,并且这两个节点的关系是从属关系,即用户从属于组。

根据这个数据模型,使用Spring Data Neo4j进行建模。

用户节点建模:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
package com.demo.neo4j.domain;
 
import org.neo4j.ogm.annotation.GraphId;
import org.neo4j.ogm.annotation.NodeEntity;
import org.neo4j.ogm.annotation.Relationship;
 
@NodeEntity
public class User {
   @GraphId
   private Long id;
   private String name;
 
   @Relationship(type = "从属", direction = Relationship.OUTGOING)
   private Group group;
 
   public User() {
   }
 
   public Long getId() {
      return id;
   }
 
   public void setId(Long id) {
      this.id = id;
   }
 
   public String getName() {
      return name;
   }
 
   public void setName(String name) {
      this.name = name;
   }
 
   public Group getGroup() {
      return group;
   }
 
   public void setGroup(Group group) {
      this.group = group;
   }
}

  

组节点建模:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
package com.demo.neo4j.domain;
 
import org.neo4j.ogm.annotation.GraphId;
 
public class Group {
    @GraphId
    private Long id;
    private String name;
 
    public Group() {
    }
 
    public Long getId() {
        return id;
    }
 
    public void setId(Long id) {
        this.id = id;
    }
 
    public String getName() {
        return name;
    }
 
    public void setName(String name) {
        this.name = name;
    }
}

  

数据持久化设计:

1
2
3
4
5
6
7
8
9
10
package com.demo.neo4j.repository;
 
import com.demo.neo4j.domain.User;
import org.springframework.data.neo4j.repository.GraphRepository;
import org.springframework.stereotype.Repository;
 
@Repository
public interface UserRepository extends GraphRepository<User> {
    User findByName(String name);
}

  

使用嵌入式方式连接数据库:

1
2
3
compiler=org.neo4j.ogm.compiler.MultiStatementCypherCompiler
driver=org.neo4j.ogm.drivers.embedded.driver.EmbeddedDriver
URI=file:///test/graph.db

  

测试用例:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
package com.demo.neo4j.test;
 
import com.demo.neo4j.config.Neo4jConfig;
import com.demo.neo4j.domain.Group;
import com.demo.neo4j.domain.User;
import com.demo.neo4j.repository.UserRepository;
import org.junit.Before;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.test.context.ContextConfiguration;
import org.springframework.test.context.junit4.SpringJUnit4ClassRunner;
import org.springframework.util.Assert;
 
@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration(classes = {Neo4jConfig.class})
public class Neo4jTest {
    private static Logger log = LoggerFactory.getLogger(Neo4jTest.class);
 
    @Autowired
    private UserRepository userRepository;
 
    @Before
    public void addData() {
        Group group = new Group();
        group.setName("admins");
 
        User user = new User();
        user.setName("admin");
        user.setGroup(group);
 
        userRepository.save(user);
        Assert.notNull(user.getId());
    }
 
    @Test
    public void getData() {
        User user = userRepository.findByName("admin");
        Assert.notNull(user);
        log.info("\n================== user name={}; group name={} ==================",
                user.getName(), user.getGroup().getName());
    }
}

  

运行结果:

================== user name=admin; group name=admins ==================

Java免费学习   Java自学网 http://www.javalearns.com

关注微信号:javalearns   随时随地学Java

或扫一扫

随时随地学Java
 

Tags:访问 学习 
作者:不详 来源:网络
    你是从哪里知道本网站的?
  • 网友介绍的
  • 百度搜索的
  • Google搜索的
  • 其它搜索过来的
  • 网址输错了进来的
  • 太忙了不记得了
共有评论 0相关评论
发表我的评论
  • 大名:
  • 内容:
  • java学习网(www.javalearns.com) © 2014 版权所有 All Rights Reserved.
  • Email:javalearns@163.com 站长QQ:1356121699 晋ICP备14003680号-3
  • java学习网部分内容来自网络或网友发布,如侵犯了您利益,请发邮件至:javalearns@126.com,我们尽快处理!
  • Java学习网
  • 网站统计
  • 晋公网安备 14042902000001号