Files
spring-data-neo4j/README.adoc
2019-10-07 19:58:30 +02:00

111 lines
3.4 KiB
Plaintext
Raw Blame History

This file contains invisible Unicode characters
This file contains invisible Unicode characters that are indistinguishable to humans but may be processed differently by a computer. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
= Spring Data Neo4j⚡RX
:sectanchors:
// tag::versions[]
:spring-data-neo4j-rx_version: 1.0.0-beta01
:groupId: org.neo4j.springframework.data
:artifactId: spring-data-neo4j-rx
:artifactIdStarter: spring-data-neo4j-rx-spring-boot-starter
:neo4j_version: 4.0.0-alpha09
:spring-boot_version: 2.2.0.RC1
// end::versions[]
image:https://img.shields.io/maven-central/v/org.neo4j.springframework.data/spring-data-neo4j-rx.svg[Maven Central,link=http://search.maven.org/#search%7Cga%7C1%7Cg%3A%22org.neo4j.springframework.data%22%20AND%20a%3A%22spring-data-neo4j-rx%22]
[abstract]
--
Spring Data Neo4j⚡RX - or in short _SDN/RX_ - is an ongoing effort to create the next generation of Spring Data Neo4j, with full reactive support and lightweight mapping.
SDN/RX will work with immutable entities, regardless whether written in Java or Kotlin.
--
The primary goal of the https://projects.spring.io/spring-data[Spring Data] project is to make it easier to build Spring-powered applications that use new data access technologies such as non-relational databases, map-reduce frameworks, and cloud based data services.
The SDN/RX project aims to provide a familiar and consistent Spring-based programming model for integrating with the https://neo4j.com/[Neo4j] Graph Database.
== Manual
For a gentle introduction and some getting started guides, please use our
link:docs/manual.adoc[Manual].
== Getting Started
Here is a quick teaser of a reactive application using Spring Data Repositories in Java, without using Spring Boot.
[source,java]
----
@Node
public class Person {
private Long id;
private String name;
public Person(String name) {
this.name = name;
}
}
@Repository
interface PersonRepository extends ReactiveNeo4jRepository<Person, Long> {
Flux<Person> findAllByName(String name);
Flux<Person> findAllByNameLike(String name);
}
@Service
class MyService {
@Autowired
private final PersonRepository repository;
@Transactional
public Flux<Person> doWork() {
Person emil = new Person("Emil");
Person gerrit = new Person("Gerrit");
Person michael = new Person("Michael");
// Persist entities and relationships to graph database
return repository.saveAll(Flux.just(emil, gerrit, michael));
}
}
@Configuration
@EnableReactiveNeo4jRepositories
@EnableTransactionManagement
class MyConfiguration extends AbstractReactiveNeo4jConfig {
@Bean
public Driver driver() {
return GraphDatabase.driver("bolt://localhost:7687", AuthTokens.basic("neo4j", "passphrase"));
}
@Override
protected Collection<String> getMappingBasePackages() {
return Collections.singletonList(Person.class.getPackage().getName());
}
}
----
TIP: SDN/RX is not only about reactive support, all features are available in both ways: Imperative and reactive, we
only prefer to showcase the new reactive database access support here.
=== Maven configuration
Add the Maven dependency:
[source,xml,subs="verbatim,attributes"]
----
<dependency>
<groupId>{groupId}</groupId>
<artifactId>{artifactId}</artifactId>
<version>{spring-data-neo4j-rx_version}</version>
</dependency>
----
Nowadays, people prefer Spring Boot and we got you covered with a starter.
Please consult our link:docs/manual.adoc[manual] for more information.
=== Building SDN/RX
Please have a look at the documentation: link:docs/build.adoc[Building SDN/RX].