neo4j-contrib / Cypher Dsl
Projects that are alternatives of or similar to Cypher Dsl
= The Neo4j Cypher-DSL :sectanchors:
// tag::properties[] :groupId: org.neo4j :artifactId: neo4j-cypher-dsl
:neo4j-cypher-dsl-version: 2021.1.2-SNAPSHOT
// end::properties[]
image:https://img.shields.io/maven-central/v/org.neo4j/neo4j-cypher-dsl.svg[Maven Central,link=http://search.maven.org/#search%7Cga%7C1%7Cg%3A%22org.neo4j%22%20AND%20a%3A%22neo4j-cypher-dsl%22]
[abstract]
The Neo4j Cypher-DSL in its current form is a spin-off from Spring Data Neo4j⚡️RX, where it is used to generate all Cypher queries. We thank all contributors to all branches prior to 2020.0 for their effort in creating the previous verions.
The primary goal of this project is to have a type safe way of creating Cypher queries targeted at https://neo4j.com[Neo4j 4.0+]. Most of the constructs used here are modelled after https://www.opencypher.org[openCypher], but we include several constructs specific to Neo4j.
The core module of the Neo4j Cypher-DSL has no required runtime dependencies.
== Versioning
This rebooted version of the Neo4j Cypher-DSL uses https://calver.org[CalVer] in the same way Spring does since early 2020 (see https://spring.io/blog/2020/04/30/updates-to-spring-versions[Updates to Spring Versions]), starting at 2020.0.0.
== Manual
For a gentle introduction and some getting started guides, please use our https://neo4j-contrib.github.io/cypher-dsl[Manual].
== Getting Started
=== Adding the necessary dependencies
First, include the dependency to the Neo4j Cypher-DSL under the following coordinates: {groupId}:{artifactId}
:
==== Maven configuration
{groupId} {artifactId} {neo4j-cypher-dsl-version} ---- [source,xml,subs="verbatim,attributes"] .Inclusion of the Neo4j Cypher-DSL in a Maven project
==== Gradle configuration
[source,groovy,subs="verbatim,attributes"] .Inclusion of the Neo4j Cypher-DSL in a Gradle project
dependencies { implementation '{groupId}:{artifactId}:{neo4j-cypher-dsl-version}' }
=== A simple example
With the Cypher-DSL, you can build your queries starting with the static methods provided through org.neo4j.cypherdsl.core.Cypher
.
Static imports for those packages should be allowed:
[source,java,tabsize=4]
import static org.neo4j.cypherdsl.core.Cypher.*;
import org.neo4j.cypherdsl.core.Cypher;
class SimpleExample {
public static void main(String... a) {
var m = node("Movie").named("m");
var statement = Cypher.match(m)
.returning(m)
.build();
System.out.println(statement.getCypher());
// Prints MATCH (m:`Movie`) RETURN m
}
}
=== Required Java Version
The minimal required Java version to use the Cypher-DSL core module is Java 8. The reason for staying on JDK 8 is the fact that the Cypher-DSL is widely used in https://github.com/spring-projects/spring-data-neo4j[Spring Data Neo4j 6+]. Spring Data Neo4j shares JDK 8 as baseline with the Spring Framework until Spring Framework 6 is released.
The minimal required JDK version to build the Cypher-DSL is JDK 11. To build the native examples, GraalVM 11 is required.