02.25 SpringBoot中文参考指南(2.1.6)32.3、Neo4j

<code>英文原文:https://docs.spring.io/spring-boot/docs/2.1.6.RELEASE/reference/html/boot-features-nosql.html/<code>

<code>GitHub:https://github.com/jijicai/Spring/tree/master/spring-boot/<code>

32.3、Neo4j

Neo4j 是一个开源的 NoSQL 图形数据库,它使用了一个由一级关系连接的节点的丰富数据类型,比传统的 RDBMS 方法更适合连接大数据。Spring Boot 为使用 Neo4j 提供了一些便利,包括:spring-boot-starter-data-neo4j “Starter”。

32.3.1、连接到 Neo4j 数据库

要访问 Neo4j 服务器,可以插入自动配置的 org.Neo4j.ogm.session.Session。默认情况下,该实例尝试使用 Bolt 协议连接到 localhost:7687 上的 Neo4j 服务器。下面的示例展示如何注入 Neo4j Session:


<code>@Componentpublic class MyBean { private final Session session; @Autowired public MyBean(Session session) { this.session = session; } // ...}/<code>

你可以通过设置 spring.data.neo4j.* 属性来配置要使用的 uri 和凭据,如下面示例所示:

<code>spring.data.neo4j.uri=bolt://my-server:7687spring.data.neo4j.username=neo4jspring.data.neo4j.password=secret/<code>

通过添加 org.neo4j.ogm.config.Configuration @Bean,你可以完全控制会话的创建。另外,添加 SessionFactory 类型的 @Bean 将禁用自动配置并提供完全控制。

32.3.2、使用嵌入式模式

如果将 org.neo4j:neo4j-ogm-embedded-driver 添加到应用程序的依赖项中,Spring Boot 会自动配置一个进程内的 Neo4j 嵌入式实例,该实例在应用程序关闭时不会保留任何数据。

注释:由于嵌入式 Neo4j OGM 驱动程序本身不提供 Neo4j 内核,因此必须声明 org.neo4j:neo4j 为依赖项。有关兼容版本的列表,请参阅 Neo4j OGM 文档。(https://neo4j.com/docs/ogm-manual/current/reference/#reference:getting-started )

当类路径上有多个驱动程序时,嵌入式驱动程序优先于其他驱动程序。可以通过设置spring.data.neo4j.embedded.enabled=false 显式禁用嵌入模式。

如果嵌入式驱动程序和 Neo4j 内核位于上述类路径上,则 Data Neo4j Tests 自动使用嵌入式 Neo4j 实例。

注释:通过在配置中提供数据库文件的路径(例如:spring.data.neo4j.uri=file://var/tmp/graph.db),可以为嵌入式模式启用持久性。

32.3.3、Neo4jSession

默认情况下,如果你运行的是 web 应用程序,则会话将绑定到整个请求处理的线程(即,它使用“在视图中打开会话”模式)。如果不需要此行为,请将以下行添加到 application.properties 文件中:

<code>spring.data.neo4j.open-in-view=false/<code>

32.3.4、Spring Data Neo4j 存储库

Spring Data 包括对 Neo4j 的存储库支持。

与许多其他 Spring Data 模块一样,Spring Data Neo4j 与 Spring Data JPA 共享公共基础设施。你可以使用前面的 JPA 示例,并将 City 定义为 Neo4j OGM @NodeEntity 而不是 JPA @Entity,并且存储库抽象也以相同的方法工作,如下面示例所示:

<code>package com.example.myapp.domain;import java.util.Optional;import org.springframework.data.neo4j.repository.*;public interface CityRepository extends Neo4jRepository<city> { Optional<city> findOneByNameAndState(String name, String state);}/<city>/<city>/<code>

spring-boot-starter-data-neo4j “Starter” 支持存储库和事务管理。通过在 @Configuration bean 上分别使用 @EnableNeo4jRepositories 和 @EntityScan,可以自定义查找存储库和实体的位置。

提示:有关 Spring Data Neo4j 的完整细节,包括其对象映射技术,请参阅参考文档。(https://projects.spring.io/spring-data-neo4j/ )

32.4、Gemfire

Spring Data Gemfire 为访问 Pivotal Gemfire 数据管理平台提供了方便的 Spring 友好工具。有一个 spring-boot-starter-data-gemfire “Starter”,用于以方便的方式收集依赖项。目前还没有对 Gemfire 的自动配置支持,但是你可以使用单个注解 @EnableGemfireRepositories 来启用 Spring Data Repositories。(https://github.com/spring-projects/spring-data-gemfire/blob/master/src/main/java/org/springframework/data/gemfire/repository/config/EnableGemfireRepositories.java )

32.5、Solr

Apache Solr 是一个搜索引擎。Spring Boot 为 Solr 5 客户端库提供了基本的自动配置,以及 Spring Data Solr 提供的其之上的抽象。有一个 spring-boot-starter-data-solr “Starter”,用于以方便的方式收集依赖项。

32.5.1、连接到 Solr

你可以像注入任何其他 Spring bean 一样注入一个自动配置的 SolrClient 实例。默认情况下,该实例尝试连接到 localhost:8983/solr 上的服务器。下面的示例展示了如何注入 Solr bean:

<code>@Componentpublic class MyBean { private SolrClient solr; @Autowired public MyBean(SolrClient solr) { this.solr = solr; } // ...}/<code>

如果你添加自己的 SolrClient 类型的 @Bean,它将替换默认值。

32.5.2、Spring Data Solr 存储库

Spring Data 包括对 Apache Solr 的存储库支持。与前面讨论的 JPA 存储库一样,基本原则是根据方法名为你自动构造查询。

事实上,Spring Data JPA 和 Spring Data Solr 共享相同的公共基础设施。你可以从前面的 JPA 示例开始,假设 City 现在是一个 @SolrDocument 类,而不是一个 JPA @Entity,那么它的工作方式是相同的。

提示:有关 Spring Data Solr 的完整详细信息,请参阅参考文档。(https://projects.spring.io/spring-data-solr/ )