Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Submit feedback
Sign in / Register
Toggle navigation
S
spring-boot
Project
Project
Details
Activity
Releases
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
DEMO
spring-boot
Commits
8a53adf3
Commit
8a53adf3
authored
Sep 20, 2018
by
Michael J. Simons
Committed by
Stephane Nicoll
Sep 21, 2018
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
Fix and improve Neo4j related documentation
See gh-14548
parent
aeca6d4b
Changes
1
Hide whitespace changes
Inline
Side-by-side
Showing
1 changed file
with
52 additions
and
55 deletions
+52
-55
spring-boot-features.adoc
...ing-boot-docs/src/main/asciidoc/spring-boot-features.adoc
+52
-55
No files found.
spring-boot-project/spring-boot-docs/src/main/asciidoc/spring-boot-features.adoc
View file @
8a53adf3
...
@@ -3554,7 +3554,7 @@ considered. A typical entity class resembles the following example:
...
@@ -3554,7 +3554,7 @@ considered. A typical entity class resembles the following example:
public City(String name, String state) {
public City(String name, String state) {
this.name = name;
this.name = name;
this.
country = country
;
this.
state = state
;
}
}
public String getName() {
public String getName() {
...
@@ -3606,7 +3606,7 @@ The following example shows a typical Spring Data repository interface definitio
...
@@ -3606,7 +3606,7 @@ The following example shows a typical Spring Data repository interface definitio
Page<City> findAll(Pageable pageable);
Page<City> findAll(Pageable pageable);
City findByNameAnd
CountryAllIgnoringCase(String name, String country
);
City findByNameAnd
StateAllIgnoringCase(String name, String state
);
}
}
----
----
...
@@ -4006,7 +4006,7 @@ in the following example:
...
@@ -4006,7 +4006,7 @@ in the following example:
Page<City> findAll(Pageable pageable);
Page<City> findAll(Pageable pageable);
City findByNameAnd
CountryAllIgnoringCase(String name, String country
);
City findByNameAnd
StateAllIgnoringCase(String name, String state
);
}
}
----
----
...
@@ -4045,29 +4045,28 @@ the Mongo instance's configuration and logging routing.
...
@@ -4045,29 +4045,28 @@ the Mongo instance's configuration and logging routing.
[[boot-features-neo4j]]
[[boot-features-neo4j]]
=== Neo4j
=== Neo4j
http://neo4j.com/[Neo4j] is an open-source NoSQL graph database that uses a rich data
http://neo4j.com/[Neo4j] is an open-source NoSQL graph database that uses a rich data
model of nodes
rela
ted by first class relationships, which is better suited for connected
model of nodes
connec
ted by first class relationships, which is better suited for connected
big data than traditional
rdbms
approaches. Spring Boot offers several conveniences for
big data than traditional
RDBMS
approaches. Spring Boot offers several conveniences for
working with Neo4j, including the `spring-boot-starter-data-neo4j` "`Starter`".
working with Neo4j, including the `spring-boot-starter-data-neo4j` "`Starter`".
[[boot-features-connecting-to-neo4j]]
[[boot-features-connecting-to-neo4j]]
==== Connecting to a Neo4j Database
==== Connecting to a Neo4j Database
You can inject an auto-configured `Neo4jSession`, `Session`, or `Neo4jOperations`
To access a Neo4j server, you can inject an auto-configured `org.neo4j.ogm.session.Session`.
instance as you would any other Spring Bean. By default, the instance tries to connect to
By default, the instance tries to connect to a Neo4j server at `localhost:7687` via the Bolt
a Neo4j server at `localhost:7474`. The following example shows how to inject a Neo4j
protocol. The following example shows how to inject a Neo4j session:
bean:
[source,java,indent=0]
[source,java,indent=0]
----
----
@Component
@Component
public class MyBean {
public class MyBean {
private final
Neo4jTemplate neo4jTemplate
;
private final
Session session
;
@Autowired
@Autowired
public MyBean(
Neo4jTemplate neo4jTemplate
) {
public MyBean(
Session session
) {
this.
neo4jTemplate = neo4jTemplate
;
this.
session = session
;
}
}
// ...
// ...
...
@@ -4075,20 +4074,20 @@ bean:
...
@@ -4075,20 +4074,20 @@ bean:
}
}
----
----
You can take full control of the configuration by adding a
You can configure the uri and credentials to use by setting the `spring.data.neo4j.*`
`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.*`
properties, as shown in the following example:
properties, as shown in the following example:
[source,properties,indent=0]
[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.username=neo4j
spring.data.neo4j.password=secret
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]]
[[boot-features-connecting-to-neo4j-embedded]]
...
@@ -4096,24 +4095,32 @@ properties, as shown in the following example:
...
@@ -4096,24 +4095,32 @@ properties, as shown in the following example:
If you add `org.neo4j:neo4j-ogm-embedded-driver` to the dependencies of your application,
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
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
not persist any data when your application shuts down.
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:
----
[NOTE]
spring.data.neo4j.uri=file://var/tmp/graph.db
====
----
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]
[NOTE]
====
====
The Neo4j OGM embedded driver does not provide the Neo4j kernel. Users are expected to
You can enable persistence for the embedded mode by providing a path to a database file
provide this dependency manually. See
in your configuration like this: `spring.data.neo4j.uri=file://var/tmp/graph.db`.
http://neo4j.com/docs/ogm-manual/current/reference/#reference:getting-started[the
documentation] for more details.
====
====
[[boot-features-neo4j-ogm-session]]
[[boot-features-neo4j-ogm-session]]
==== Neo4jSession
==== Neo4jSession
...
@@ -4133,44 +4140,34 @@ pattern). If you do not want this behavior, add the following line to your
...
@@ -4133,44 +4140,34 @@ pattern). If you do not want this behavior, add the following line to your
==== Spring Data Neo4j Repositories
==== Spring Data Neo4j Repositories
Spring Data includes repository support for Neo4j.
Spring Data includes repository support for Neo4j.
In fact, both Spring Data JPA and Spring Data Neo4j share the same common infrastructure.
Spring Data Neo4j shares the common infrastructure with Spring Data JPA as many other
You could take the JPA example from earlier and, assuming that `City` is now a Neo4j OGM
Spring Data modules do. You could take the JPA example from earlier and define
`@NodeEntity` rather than a JPA `@Entity`, it works in the same way.
`City` as Neo4j OGM `@NodeEntity` rather than JPA `@Entity` and the repository
abstraction works in the same way, as shown in the following example:
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:
[source,java,indent=0]
[source,java,indent=0]
----
----
package com.example.myapp.domain;
package com.example.myapp.domain;
import org.springframework.data.domain.*;
import java.util.Optional;
import org.springframework.data.repository.*;
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
The `spring-boot-starter-data-neo4j` "`Starter`" enables the repository support as well
technologies, refer to the https://projects.spring.io/spring-data-neo4j/[reference
as transaction management. You can customize the locations to look for repositories and
documentation].
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.
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment