Skip to content

renatodelgaudio/movies-java-spring-data-neo4j

 
 

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

2 Commits
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Spring Data Neo4j with Spring Boot and Spring Data Rest - Movies Example Application

Spring Data Neo4j was the first Spring Data project, started by the CEOs Rod Johnson and Emil Eifrem. It enables convenient integration of Neo4j in your Spring-based application. It provides object-graph mapping functionality and other features common to the Spring Data projects.

To use Neo4j with Spring Data Neo4j, you just add the dependency for Spring-Boot and Spring-Data-Neo4j to your build setup.

link:pom.xml[role=include]

After setting up a Java-based Spring-Boot configuration,

link:src/main/java/movies/spring/data/neo4j/MyNeo4jConfiguration.java[role=include]

and annotating your @Node- and @RelationshipEntity, you can use the Neo4jTemplate to access Neo4j APIs and object graph mapping functionality.

link:src/main/java/movies/spring/data/neo4j/domain/Movie.java[role=include]

Additionally you can leverage the convenient Spring-Data repositories to get interface-based DAO implementations injected into your Spring Components.

link:src/main/java/movies/spring/data/neo4j/repositories/MovieRepository.java[role=include]

In our case we use the repository from a MovieService to compute the graph representation for the visualization. The service is then injected into our main Boot application, which also doubles as @RestMvcController which exposes the /graph endpoint.

The other two endpoints for finding multiple movies by title and loading a single movie are provided out of the box by the Spring-Data-Rest project which exposes our MovieRepository as REST endpoints. The rendering of the movie objects (and related entities) happens automatically out of the box via Jackson mapping.

See the {github}/examples/java/spring-data-neo4j[GitHub repository] for the source code.

Note
The current version of Spring Data Neo4j works best with an embedded Neo4j database. To achieve highest-performance Neo4j-Server integration move your SDN persistence layer into a Server Extension.

The Stack

These are the components of our Web Application:

  • Application Type: Spring-Boot Java Web Application (Jetty)

  • Web framework: Spring-Boot enabled Spring-WebMVC, Spring-Data-Rest

  • Persistence Access: Spring-Data-Neo4j

  • Database: Neo4j-Server

  • Frontend: jquery, bootstrap, d3.js

Endpoints:

Get Movie

// JSON object for single movie with cast
curl http://localhost:8080/movies/search/findByTitle?0=The%20Matrix

// list of JSON objects for movie search results
curl http://localhost:8080/movies/search/findByTitleContaining?0=matrix

// JSON object for whole graph viz (nodes, links - arrays)
curl http://localhost:8080/graph

About

Neo4j Movies Demo App in java with spring-data-neo4j

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors

Languages

  • HTML 81.0%
  • Java 19.0%