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.M6
// 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.
Description
No description provided
Readme 35 MiB
Languages
Java 96.4%
CSS 2.2%
AspectJ 0.8%
HTML 0.4%