Neo4j es una base de datos de gráficos NoSQL de código abierto que
utiliza un modelo de datos con todas las funciones de nodos conectados por relaciones completas, que es más adecuado
para big data vinculados que los enfoques RDBMS tradicionales. Spring Boot proporciona varios asistentes para
trabajar con Neo4j, incluido un spring-boot-starter-data-neo4j
"inicial".
Conectarse a la base de datos Neo4j
Para acceder al servidor Neo4j, puede implementar el org.neo4j.driver.Driver
autoconfigurable. De forma
predeterminada, la instancia intentará conectarse al servidor Neo4j en localhost:7687
utilizando el
protocolo Bolt. El siguiente ejemplo muestra cómo implementar un Driver
para Neo4j, que dará acceso,
entre otras cosas, a Session
:
@Component
public class MyBean {
private final Driver driver;
public MyBean(Driver driver) {
this.driver = driver;
}
}
@Component
class MyBean(private val driver: Driver) {
}
Puede agregar varios aspectos del controlador a la configuración utilizando las propiedades
spring.neo4j.*
. El siguiente ejemplo muestra cómo configurar el URI y las credenciales a utilizar:
spring.neo4j.uri=bolt://my-server:7687
spring.neo4j.authentication.username=neo4j
spring.neo4j.authentication.password=secret
spring:
neo4j:
uri: "bolt://my-server:7687"
authentication:
username: "neo4j"
password: "secret"
El Driver
autoconfigurable se crea utilizando ConfigBuilder
. Para ajustar su
configuración, declare uno o más beans ConfigBuilderCustomizer
. Cada uno de ellos será llamado en orden
a través del ConfigBuilder
, que se utiliza para crear el Driver
.
Repositorios Spring Data Neo4j
Spring Data contiene soporte de repositorio para Neo4j.
Spring Data Neo4j comparte la infraestructura Spring Data JPA, al igual que muchos otros módulos Spring Data. Puede
tomar el ejemplo de JPA de la sección anterior y definir City
como @Node
para Spring Data
Neo4j en lugar de @Entity
para JPA, mientras abstrae el almacenamiento funcionará exactamente como se
muestra en el siguiente ejemplo:
public interface CityRepository extends Neo4jRepository<City, Long> {
Optional<City> findOneByNameAndState(String name, String state);
}
interface CityRepository : Neo4jRepository<City?, Long?> {
fun findOneByNameAndState(name: String?, state: String?): Optional<City?>?
}
"Starter" spring-boot-starter-data-neo4j
permite la compatibilidad con repositorios, así como la gestión
de transacciones. Spring Boot admite repositorios Neo4j clásicos y reactivos a través de los beans Neo4jTemplate
o ReactiveNeo4jTemplate
. Si Project Reactor está disponible en el classpath, el estilo reactivo también
se configura automáticamente.
Puede configurar las ubicaciones donde se buscarán repositorios y entidades usando las anotaciones @EnableNeo4jRepositories
y @EntityScan
, respectivamente, en un bean marcado con @Configuración
código de
anotación.
En una aplicación que utiliza el estilo reactivo, ReactiveTransactionManager
no se configura
automáticamente. Para habilitar la gestión de transacciones, se debe definir el siguiente bean en la
configuración:
@Configuration(proxyBeanMethods = false)
public class MyNeo4jConfiguration {
@Bean
public ReactiveNeo4jTransactionManager reactiveTransactionManager(Driver driver,
ReactiveDatabaseSelectionProvider databaseNameProvider) {
return new ReactiveNeo4jTransactionManager(driver, databaseNameProvider);
}
}
@Configuration(proxyBeanMethods = false)
class MyNeo4jConfiguration {
@Bean
fun reactiveTransactionManager(driver: Driver,
databaseNameProvider: ReactiveDatabaseSelectionProvider): ReactiveNeo4jTransactionManager {
return ReactiveNeo4jTransactionManager(driver, databaseNameProvider)
}
}
GO TO FULL VERSION