spring-data-neo4j

Provides support to increase developer productivity in Java when using the neo4j graph database. Uses familiar Spring concepts such as a template classes for core API usage and provides an annotation based programming model using AspectJ

Github星跟蹤圖

image:https://spring.io/badges/spring-data-neo4j/ga.svg[title=Spring Data Neo4j,link=https://projects.spring.io/spring-data-neo4j#quick-start]
image:https://spring.io/badges/spring-data-neo4j/snapshot.svg[title=Spring Data Neo4j,link=https://projects.spring.io/spring-data-neo4j#quick-start]

= Spring Data Neo4j

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 Spring Data Neo4j project aims to provide a familiar and consistent Spring-based programming model for integrating with the https://neo4j.com/[Neo4j] Graph Database.

== Code of Conduct

This project is governed by the link:CODE_OF_CONDUCT.adoc[Spring Code of Conduct]. By participating, you are expected to uphold this code of conduct. Please report unacceptable behavior to spring-code-of-conduct@pivotal.io.

== Getting Started

Here is a quick teaser of an application using Spring Data Repositories in Java:

[source,java]

@NodeEntity
public class Person {
private Long id;
private String name;

@Relationship(type = "FRIEND", direction = "OUTGOING")
private Set<Person> friends;

public Person() {}
public Person(String name) { this.name = name; }

private void knows(Person friend) { friends.add(friend); }

}

@Repository
public interface PersonRepository extends Neo4jRepository<Person, Long> {

List findByName(String name);

List findByNameLike(String name);
}

@Service
public class MyService {

@Autowired
private final PersonRepository repository;

@Transactional
public void doWork() {

    Person jon = new Person("Jon");
    Person emil = new Person("Emil");
    Person rod = new Person("Rod");

    emil.knows(jon);
    emil.knows(rod);

    // Persist entities and relationships to graph database
    personRepository.save(emil);

    for (Person friend : emil.getFriends()) {
        System.out.println("Friend: " + friend);
    }

    // Control loading depth
    Person thatSamejon = personRepository.findOne(id, 2);
    for (Person friend : jon.getFriends()) {
        System.out.println("Jon's friends to depth 2: " + friend);
    }
}

}

@Configuration
@ComponentScan
@EnableNeo4jRepositories
@EnableTransactionManagement
public class MyConfiguration {

@Bean
public SessionFactory sessionFactory(org.neo4j.ogm.config.Configuration configuration) {
    // with domain entity base package(s)
    return new SessionFactory(configuration, "com.example.person.domain");
}

@Bean
public org.neo4j.ogm.config.Configuration configuration() {
    org.neo4j.ogm.config.Configuration configuration = new org.neo4j.ogm.config.Configuration.Builder()
            .uri("bolt://localhost")
            .credentials("user", "secret")
            .build();
    return configuration;
}

@Bean
public Neo4jTransactionManager transactionManager() {
	return new Neo4jTransactionManager(sessionFactory());
}

}

=== Maven configuration

Add the Maven dependency:

[source,xml]

If you'd rather like the latest snapshots of the upcoming major version, use our Maven snapshot repository and declare the appropriate dependency version.

[source,xml]

Please find the setup for Gradle based projects in the the https://docs.spring.io/spring-data/data-neo4j/docs/current/reference/html/[Reference Manual].

Spring Data Neo4j provides support for connecting to all of Neo4j's java drivers:

  • Bolt
  • HTTP
  • Embedded

Depending on your need, you'll have to add one additional Neo4j-OGM module.
Please refer to the reference linked above.

== Getting Help

Having trouble with Spring Data? We’d love to help!

== Reporting Issues

Spring Data uses JIRA as issue tracking system to record bugs and feature requests. If you want to raise an issue, please follow the recommendations below:

  • Before you log a bug, please search the
    https://jira.spring.io/browse/DATAGRAPH[issue tracker] to see if someone has already reported the problem.
  • If the issue doesn’t already exist, https://jira.spring.io/browse/DATAGRAPH[create a new issue].
  • Please provide as much information as possible with the issue report, we like to know the version of Spring Data that you are using and JVM version.
  • If you need to paste code, or include a stack trace use JIRA {code}…{code} escapes before and after your text.
  • If possible try to create a test-case or project that replicates the issue. Attach a link to your code or a compressed file containing your code.

== Building from Source

You don’t need to build from source to use Spring Data (binaries in https://repo.spring.io[repo.spring.io]), but if you want to try out the latest and greatest, Spring Data can be easily built with the https://github.com/takari/maven-wrapper[maven wrapper].
You also need JDK 1.8.

[source,bash]

$ ./mvnw clean install

If you want to build with the regular mvn command, you will need https://maven.apache.org/run-maven/index.html[Maven v3.5.0 or above].

Also see link:CONTRIBUTING.adoc[CONTRIBUTING.adoc] if you wish to submit pull requests, and in particular please sign the https://cla.pivotal.io/sign/spring[Contributor's Agreement] before your first non-trivial change.

=== Building reference documentation

Building the documentation builds also the project without running tests.

[source,bash]

$ ./mvnw clean install -Pdistribute

The generated documentation is available from target/site/reference/html/index.html.

== Guides

The https://spring.io/[spring.io] site contains several guides that show how to use Spring Data step-by-step:

== Examples

== License

Spring Data Neo4j is Open Source software released under the https://www.apache.org/licenses/LICENSE-2.0.html[Apache 2.0 license].

主要指標

概覽
名稱與所有者spring-projects/spring-data-neo4j
主編程語言Java
編程語言Java (語言數: 4)
平台
許可證Apache License 2.0
所有者活动
創建於2011-09-27 21:02:43
推送於2025-04-22 12:32:09
最后一次提交
發布數367
最新版本名稱8.0.0-M2 (發布於 2025-04-22 14:31:46)
第一版名稱1.0.0.M1 (發布於 2010-12-24 15:34:21)
用户参与
星數844
關注者數100
派生數616
提交數2.1k
已啟用問題?
問題數2529
打開的問題數38
拉請求數186
打開的拉請求數1
關閉的拉請求數286
项目设置
已啟用Wiki?
已存檔?
是復刻?
已鎖定?
是鏡像?
是私有?