简介:Neo4j 和 Spring Boot 集成
Neo4j 是一种开源的 NoSQL 图数据库,专为处理关联性强的大数据而设计。传统的关系型数据库(RDBMS)不擅长处理大量的关系数据,而 Neo4j 则通过基于图的模型使这些关系处理得更高效、直观。Spring Boot 提供了很多与 Neo4j 集成的便捷工具,如 spring-boot-starter-data-neo4j 启动器。
连接到 Neo4j 数据库
在 Spring Boot 中,可以通过自动配置的 org.neo4j.driver.Driver 访问 Neo4j 数据库。默认情况下,驱动会尝试连接到 localhost:7687 上使用 Bolt 协议的 Neo4j 服务器。
以下代码展示了如何注入 Neo4j 的 Driver 并创建一个节点:
import org.neo4j.driver.Driver;
import org.neo4j.driver.Session;
import org.neo4j.driver.Values;
import org.springframework.stereotype.Component;
@Component
public class MyBean {
private final Driver driver;
public MyBean(Driver driver) {
this.driver = driver;
}
public String someMethod(String message) {
try (Session session = this.driver.session()) {
return session.executeWrite(
(transaction) -> transaction
.run("CREATE (a:Greeting) SET a.message = $message RETURN a.message + ', from node ' + id(a)",
Values.parameters("message", message))
.single()
.get(0)
.asString());
}
}
}
配置 Neo4j 连接参数
你可以通过 spring.neo4j.*
属性配置连接参数,如 URI 和认证信息:
application.properties:
spring.neo4j.uri=bolt://my-server:7687
spring.neo4j.authentication.username=neo4j
spring.neo4j.authentication.password=secret
可以通过 ConfigBuilderCustomizer 来细化 Driver 的配置。
Spring Data Neo4j Repositories
Spring Data Neo4j 提供了强大的仓库支持。通过 Neo4jRepository,你可以像操作关系型数据库一样操作图数据库。
以下是定义 City 节点实体及其仓库的示例:
import java.util.Optional;
import org.springframework.data.neo4j.repository.Neo4jRepository;
public interface CityRepository extends Neo4jRepository<City, Long> {
Optional<City> findOneByNameAndState(String name, String state);
}
通过使用 spring-boot-starter-data-neo4j 启动器,自动配置了仓库支持和事务管理。Spring Boot 还支持经典的和响应式的 Neo4j 仓库。通过 Neo4jTemplate 或 ReactiveNeo4jTemplate 实现数据访问。响应式模式自动配置支持 Project Reactor。
启用事务管理
在使用响应式模式时,ReactiveTransactionManager 需要手动配置:
import org.neo4j.driver.Driver;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.data.neo4j.core.ReactiveDatabaseSelectionProvider;
import org.springframework.data.neo4j.core.transaction.ReactiveNeo4jTransactionManager;
@Configuration(proxyBeanMethods = false)
public class MyNeo4jConfiguration {
@Bean
public ReactiveNeo4jTransactionManager reactiveTransactionManager(Driver driver,
ReactiveDatabaseSelectionProvider databaseNameProvider) {
return new ReactiveNeo4jTransactionManager(driver, databaseNameProvider);
}
}
总结
Spring Boot 3.3 提供了丰富的 Neo4j 集成支持,简化了与图数据库的交互。无论是经典的数据库操作还是响应式操作模式,Spring Boot 都能为开发者提供自动配置和高效的数据访问支持。通过结合 Neo4j 的强大图数据建模能力和 Spring Boot 的开发便利性,企业级应用可以更高效地处理复杂的数据关系。
标签:springboot,Spring,org,driver,Boot,Neo4j,neo4j,import From: https://www.cnblogs.com/o-O-oO/p/18542842微信公众号:九极客