Spring Data Neo4J
Spring Data для Neo4j - это часть проекта Spring Data, целью которой является предоставление совместимой и похожей на Spring модели программирования для данной СУБД, сохраняя её возможности и функциональность.
Быстрый старт

Введение

Spring Data Neo4J обеспечивает интеграцию с графоориентированной СУБД Neo4j. Шаблонная модель программирования эквивалентна шаблонной модели программирования Spring и создает фундамент для взаимодействия с графом, а также поддержку репозиториев.

Возможности

  • Поддержка свойств графов(узлы связаны между собой отношениями, каждый с произвольными свойствами)
  • Object-Graph-Mapping аннотации для POJO сущностей
  • Дополнение расширенного маппинга через AspectJ
  • Neo4jTemplate с удобным API, трансляция ошибок и управление тразакциями
  • Расширенная поддержка репозиториев, включая аннотации и геопространственные методы поиска
  • Динамическая типизация(утиная типизация)
  • Поддержка языков запросов Cypher и Gremlin
  • Разделение стратегий представления типов для сохранения иформации о типах в графе
  • Межбазовая поддержка JPA - Graph Entities
  • Поддержка Neo4j Traversal для динамических полей и методов репозиториев
  • Поддержка Neo4j Indexing(включая уникальные сущности, полнотекстовый, геопространственный и запросы для числовых диапазонов)
  • Поддержка прозрачного доступа к Neo4j Server через его REST API
  • Поддержка запуска как расширение в Neo4j Server

Быстрый старт

Загрузка
Maven
Gradle

Рекомендованный путь для начального использования spring-data-neo4j в вашем проекте с использованием системы управления зависимостями – скопировать фрагмент кода ниже и вставить в вашу конфигурацию сборки. Нужна помощь? Ознакомьтесь с нашими руководствами по созданию приложений с использованием Maven и Gradle.

<dependencies>
    <dependency>
        <groupId>org.springframework.data</groupId>
        <artifactId>spring-data-neo4j</artifactId>
        <version>3.1.0.RELEASE</version>
    </dependency>
</dependencies>

Пример

@NodeEntity
public class Movie {

  @GraphId Long id;

  @Indexed(type = FULLTEXT, indexName = "search")
  String title;

  Person director;

  @RelatedTo(type="ACTS_IN", direction = INCOMING)
  Set actors;

  @RelatedToVia(type = "RATED")
  Iterable ratings;

  @Query("start movie=node({self}) match movie-->genre<--similar return similar")
  Iterable similarMovies;
}

Репозитории

Определим интерфейс репозитория

interface MovieRepository extends GraphRepository {

  @Query("start movie={0} match m>-[rating:RATED]-user return rating")
  Iterable getRatings(Movie movie);

  // Актёры
  Iterable findByActorsMoviesActorName(name)
}

Активируем Spring Data Neo4j репозитории

<neo4j:repositories base-package="com.example.dao"/>

Используем репозиторий

@Autowired MovieRepository repo;

Iterable movies = repo.findAll();
Movie movie = repo.findByPropertyValue("title","Matrix");
repo.save(movie);

Iterable ratings = repo.getRatings(movie);
comments powered by Disqus
Spring Data Neo4J
Версия
Документация