Neo4j
Neo4j是一个开源的NoSQL图数据库,它使用图(graph)相关的概念来描述数据模型,把数据保存为图中的节点以及节点之间的关系。相比传统rdbms(关系管理系统)的方式,Neo4j更适合大数据关系分析。Spring Boot为使用Neo4j提供很多便利,包括spring-boot-starter-data-neo4j‘Starter’。
![](https://img.laitimes.com/img/_0nNw4CM6IyYiwiM6ICdiwiI0gTMx81dsQWZ4lmZf1GLlpXazVmcvwFciV2dsQXYtJ3bm9CX9s2RkBnVHFmb1clWvB3MaVnRtp1XlBXe0xCMy81dvRWYoNHLwEzX5xCMx8FesU2cfdGLwMzX0xiRGZkRGZ0Xy9GbvNGLpZTY1EmMZVDUSFTU4VFRR9Fd4VGdsYTMfVmepNHLrJXYtJXZ0F2dvwVZnFWbp1zczV2YvJHctM3cv1Ce-cGcq5COxQjN3ADMhZDMhFjYyEmNzYzX0MDMxgTM4AzLcFTMyIDMy8CXn9Gbi9CXzV2Zh1WavwVbvNmLvR3YxUjLyM3Lc9CX6MHc0RHaiojIsJye.jpg)
连接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仓库支持它。