天天看点

飞5的Spring Boot2(26)- neo4j

Neo4j

Neo4j是一个开源的NoSQL图数据库,它使用图(graph)相关的概念来描述数据模型,把数据保存为图中的节点以及节点之间的关系。相比传统rdbms(关系管理系统)的方式,Neo4j更适合大数据关系分析。Spring Boot为使用Neo4j提供很多便利,包括spring-boot-starter-data-neo4j‘Starter’。

飞5的Spring Boot2(26)- neo4j

连接Neo4j数据库

你可以注入一个自动配置的Neo4jSession,Session,或Neo4jOperations实例,就像使用其他Spring Bean那样。该实例默认使用localhost:7474连接Neo4j服务器:

1@Component
2public class MyBean {
3private final Neo4jTemplate neo4jTemplate;
4@Autowired
5public MyBean(Neo4jTemplate neo4jTemplate) {
6this.neo4jTemplate = neo4jTemplate;
7}
8// ...
9}      

添加自己的org.neo4j.ogm.config.Configuration @Bean,你就能完全控制该配置了。同时,添加一个Neo4jOperations类型的@Bean可以禁用自动配置。

通过spring.data.neo4j.*属性可以配置使用的用户和凭证:

1spring.data.neo4j.uri=http://my-server:7474
2spring.data.neo4j.username=neo4j
3spring.data.neo4j.password=secret      

使用内嵌模式

注意

Neo4j的内嵌模式从属于不同的许可,在将它集成到应用之前确保复查下。

如果将org.neo4j:neo4j-ogm-embedded-driver依赖添加到应用中,Spring Boot会自动配置一个进程内(in-process)的内嵌Neo4j实例,当应用关闭时,该实例不会持久化任何数据。设置spring.data.neo4j.embedded.enabled=false可显式关闭该模式,你也可以启用内嵌模式的持久化特性:

1spring.data.neo4j.uri=file://var/tmp/graph.db      

Neo4jSession

Neo4jSession默认的生命周期是应用程序范围,如果运行的是web应用,你可以很轻松的改变它的scope:

1spring.data.neo4j.session.scope=session      

Spring Data Neo4j仓库

Spring Data包含的仓库也支持Neo4j,实际上,Spring Data JPA和Spring Data Neo4j使用相同的常用设施,所以你可以采用先前JPA的示例,假设City现在是一个Neo4j OGM @NodeEntity而不是JPA @Entity,它将以同样的方式工作。

注意

你可以使用@EntityScan注解定义实体扫描路径。

将以下两个注解添加到你的Spring configuration,可以启用repository支持(还有可选的对@Transactional的支持):

1@EnableNeo4jRepositories(basePackages = "com.example.myapp.repository")
2@EnableTransactionManagement      

仓库示例

1package com.example.myapp.domain;
2import org.springframework.data.domain.*;
3import org.springframework.data.repository.*;
4public interface CityRepository extends GraphRepository<City> {
5Page<City> findAll(Pageable pageable);
6City findByNameAndCountry(String name, String country);
7}      

Gemfire

Spring Data Gemfire为使用Pivotal Gemfire数据管理平台提供了方便的,Spring友好的工具。Spring Boot提供了一个用于聚集依赖的spring-boot-starter-data-gemfire‘Starter’,目前不支持Gemfire的自动配置,但你只需使用一个注解就能使Spring Data仓库支持它。