parent
aeca6d4b05
commit
8a53adf3d2
|
@ -3554,7 +3554,7 @@ considered. A typical entity class resembles the following example:
|
|||
|
||||
public City(String name, String state) {
|
||||
this.name = name;
|
||||
this.country = country;
|
||||
this.state = state;
|
||||
}
|
||||
|
||||
public String getName() {
|
||||
|
@ -3606,7 +3606,7 @@ The following example shows a typical Spring Data repository interface definitio
|
|||
|
||||
Page<City> findAll(Pageable pageable);
|
||||
|
||||
City findByNameAndCountryAllIgnoringCase(String name, String country);
|
||||
City findByNameAndStateAllIgnoringCase(String name, String state);
|
||||
|
||||
}
|
||||
----
|
||||
|
@ -4006,7 +4006,7 @@ in the following example:
|
|||
|
||||
Page<City> findAll(Pageable pageable);
|
||||
|
||||
City findByNameAndCountryAllIgnoringCase(String name, String country);
|
||||
City findByNameAndStateAllIgnoringCase(String name, String state);
|
||||
|
||||
}
|
||||
----
|
||||
|
@ -4045,29 +4045,28 @@ the Mongo instance's configuration and logging routing.
|
|||
[[boot-features-neo4j]]
|
||||
=== Neo4j
|
||||
http://neo4j.com/[Neo4j] is an open-source NoSQL graph database that uses a rich data
|
||||
model of nodes related by first class relationships, which is better suited for connected
|
||||
big data than traditional rdbms approaches. Spring Boot offers several conveniences for
|
||||
model of nodes connected by first class relationships, which is better suited for connected
|
||||
big data than traditional RDBMS approaches. Spring Boot offers several conveniences for
|
||||
working with Neo4j, including the `spring-boot-starter-data-neo4j` "`Starter`".
|
||||
|
||||
|
||||
|
||||
[[boot-features-connecting-to-neo4j]]
|
||||
==== Connecting to a Neo4j Database
|
||||
You can inject an auto-configured `Neo4jSession`, `Session`, or `Neo4jOperations`
|
||||
instance as you would any other Spring Bean. By default, the instance tries to connect to
|
||||
a Neo4j server at `localhost:7474`. The following example shows how to inject a Neo4j
|
||||
bean:
|
||||
To access a Neo4j server, you can inject an auto-configured `org.neo4j.ogm.session.Session`.
|
||||
By default, the instance tries to connect to a Neo4j server at `localhost:7687` via the Bolt
|
||||
protocol. The following example shows how to inject a Neo4j session:
|
||||
|
||||
[source,java,indent=0]
|
||||
----
|
||||
@Component
|
||||
public class MyBean {
|
||||
|
||||
private final Neo4jTemplate neo4jTemplate;
|
||||
private final Session session;
|
||||
|
||||
@Autowired
|
||||
public MyBean(Neo4jTemplate neo4jTemplate) {
|
||||
this.neo4jTemplate = neo4jTemplate;
|
||||
public MyBean(Session session) {
|
||||
this.session = session;
|
||||
}
|
||||
|
||||
// ...
|
||||
|
@ -4075,20 +4074,20 @@ bean:
|
|||
}
|
||||
----
|
||||
|
||||
You can take full control of the configuration by adding a
|
||||
`org.neo4j.ogm.config.Configuration` `@Bean` of your own. Also, adding a `@Bean` of type
|
||||
`Neo4jOperations` disables the auto-configuration.
|
||||
|
||||
You can configure the user and credentials to use by setting the `spring.data.neo4j.*`
|
||||
You can configure the uri and credentials to use by setting the `spring.data.neo4j.*`
|
||||
properties, as shown in the following example:
|
||||
|
||||
[source,properties,indent=0]
|
||||
----
|
||||
spring.data.neo4j.uri=http://my-server:7474
|
||||
spring.data.neo4j.uri=bolt://my-server:7687
|
||||
spring.data.neo4j.username=neo4j
|
||||
spring.data.neo4j.password=secret
|
||||
----
|
||||
|
||||
You can take full control over the session creation by adding a
|
||||
`org.neo4j.ogm.config.Configuration` `@Bean`. To completely disable the auto-configuration
|
||||
provided by the "`Starter`" , add a `@Bean` of type `org.neo4j.ogm.session.SessionFactory`.
|
||||
|
||||
|
||||
|
||||
[[boot-features-connecting-to-neo4j-embedded]]
|
||||
|
@ -4096,23 +4095,31 @@ properties, as shown in the following example:
|
|||
|
||||
If you add `org.neo4j:neo4j-ogm-embedded-driver` to the dependencies of your application,
|
||||
Spring Boot automatically configures an in-process embedded instance of Neo4j that does
|
||||
not persist any data when your application shuts down. You can explicitly disable that
|
||||
mode by setting `spring.data.neo4j.embedded.enabled=false`. You can also enable
|
||||
persistence for the embedded mode by providing a path to a database file, as shown in the
|
||||
following example:
|
||||
|
||||
----
|
||||
spring.data.neo4j.uri=file://var/tmp/graph.db
|
||||
----
|
||||
not persist any data when your application shuts down.
|
||||
|
||||
[NOTE]
|
||||
====
|
||||
The Neo4j OGM embedded driver does not provide the Neo4j kernel. Users are expected to
|
||||
provide this dependency manually. See
|
||||
http://neo4j.com/docs/ogm-manual/current/reference/#reference:getting-started[the
|
||||
documentation] for more details.
|
||||
As the embedded Neo4j OGM driver does not provide the Neo4j kernel itself, you have
|
||||
to declare `org.neo4j:neo4j` as dependency yourself. Refer to
|
||||
https://neo4j.com/docs/ogm-manual/current/reference/#reference:getting-started[the
|
||||
Neo4j OGM documentation] for list of compatible versions.
|
||||
====
|
||||
|
||||
The embedded driver takes precedence over the other drivers when there are multiple
|
||||
drivers on the classpath. You can explicitly disable the embedded mode by setting
|
||||
`spring.data.neo4j.embedded.enabled=false`.
|
||||
|
||||
<<boot-features-testing-spring-boot-applications-testing-autoconfigured-neo4j-test,Data Neo4j Tests>>
|
||||
automatically make use of an embedded Neo4j instance if the embedded driver and Neo4j
|
||||
kernel are on the classpath as described above.
|
||||
|
||||
[NOTE]
|
||||
====
|
||||
You can enable persistence for the embedded mode by providing a path to a database file
|
||||
in your configuration like this: `spring.data.neo4j.uri=file://var/tmp/graph.db`.
|
||||
====
|
||||
|
||||
|
||||
|
||||
[[boot-features-neo4j-ogm-session]]
|
||||
==== Neo4jSession
|
||||
|
@ -4133,44 +4140,34 @@ pattern). If you do not want this behavior, add the following line to your
|
|||
==== Spring Data Neo4j Repositories
|
||||
Spring Data includes repository support for Neo4j.
|
||||
|
||||
In fact, both Spring Data JPA and Spring Data Neo4j share the same common infrastructure.
|
||||
You could take the JPA example from earlier and, assuming that `City` is now a Neo4j OGM
|
||||
`@NodeEntity` rather than a JPA `@Entity`, it works in the same way.
|
||||
|
||||
TIP: You can customize entity scanning locations by using the `@EntityScan` annotation.
|
||||
|
||||
To enable repository support (and optionally support for `@Transactional`), add the
|
||||
following two annotations to your Spring configuration:
|
||||
|
||||
[source,java,indent=0]
|
||||
----
|
||||
@EnableNeo4jRepositories(basePackages = "com.example.myapp.repository")
|
||||
@EnableTransactionManagement
|
||||
----
|
||||
|
||||
==== Repository Example
|
||||
|
||||
The following example shows an interface definition for a Neo4j repository:
|
||||
Spring Data Neo4j shares the common infrastructure with Spring Data JPA as many other
|
||||
Spring Data modules do. You could take the JPA example from earlier and define
|
||||
`City` as Neo4j OGM `@NodeEntity` rather than JPA `@Entity` and the repository
|
||||
abstraction works in the same way, as shown in the following example:
|
||||
|
||||
[source,java,indent=0]
|
||||
----
|
||||
package com.example.myapp.domain;
|
||||
|
||||
import org.springframework.data.domain.*;
|
||||
import org.springframework.data.repository.*;
|
||||
import java.util.Optional;
|
||||
|
||||
public interface CityRepository extends GraphRepository<City> {
|
||||
import org.springframework.data.neo4j.repository.*;
|
||||
|
||||
Page<City> findAll(Pageable pageable);
|
||||
public interface CityRepository extends Neo4jRepository<City, Long> {
|
||||
|
||||
City findByNameAndCountry(String name, String country);
|
||||
Optional<City> findOneByNameAndState(String name, String state);
|
||||
|
||||
}
|
||||
----
|
||||
|
||||
TIP: For complete details of Spring Data Neo4j, including its rich object mapping
|
||||
technologies, refer to the https://projects.spring.io/spring-data-neo4j/[reference
|
||||
documentation].
|
||||
The `spring-boot-starter-data-neo4j` "`Starter`" enables the repository support as well
|
||||
as transaction management. You can customize the locations to look for repositories and
|
||||
entities by using `@EnableNeo4jRepositories` and `@EntityScan` respectively on a
|
||||
`@Configuration`-bean.
|
||||
|
||||
TIP: For complete details of Spring Data Neo4j, including its object mapping
|
||||
technologies, refer to the https://projects.spring.io/spring-data-neo4j/[project page] and
|
||||
the reference documentation.
|
||||
|
||||
|
||||
|
||||
|
|
Loading…
Reference in New Issue