SlideShare a Scribd company logo
1 of 27
Download to read offline
GraphAware®
Build Spring Data
Neo4j 4 Applications
like a Superhero
graphaware.com

@graph_aware, @luannem
Luanne Misquitta
Most active Spring project

Convenient data access to (No)SQL databases

Consistent API’s

Mapping POJOs, Template, Repositories

Neo4j, JPA, MongoDB, Redis, CouchBase & more

Spring Data
GraphAware®
Focus on performance

Based on a pure Java OGM [Neo4j-OGM]

3 Drivers available to connect to Neo4j

HTTP

Embedded

Bolt

Spring Data Neo4j 4.1
GraphAware®
Object Graph Mapping from any Java or JVM-based application

“Vampire” metadata scanning (no reflection!)

“Smart” object mapping

Mapping contexts tied to Session lifetimes

Application

HTTP session/request etc.

Support for default and bespoke type conversions

Repositories, Neo4jTemplate [SDN]

Custom Queries, Derived Finders [SDN]

Transactional Support

Features
GraphAware®
Persistence horizon (depth) indicates how many relationships
should be traversed in the graph when loading or saving data

Default loading depth is 1

Default persistence depth is -1
Variable Depth Persistence
GraphAware®
It’s a bird, it’s a plane, 

it’s a superhero graph!
Node Entities - Character
GraphAware®
@NodeEntity(label = "Character")
public class Character {
@GraphId Long graphId;
…
private Long id;
private String name;
private String alias;
private String realName;
Node Entities - Relationships
GraphAware®
public class Character {
…
@Relationship(type = "ALLY_OF", direction = Relationship.UNDIRECTED)
@Relationship(type = "ENEMY_OF", direction = Relationship.UNDIRECTED)
@Relationship(type = "MEMBER_OF")
@Relationship(type = "STARS", direction = Relationship.INCOMING)
Set<Character> allies = new HashSet<>();
Set<Character> enemies = new HashSet<>();
Set<Team> teams = new HashSet<>();
Set<Role> roles = new HashSet<>();
Set<Game> gamesFeaturedIn = new HashSet<>();
@Relationship(type = "FEATURED_IN")
@Relationship(type = "FEATURED_IN")
Set<Comic> comicsFeaturedIn = new HashSet<>();
Node Entities - Hierarchy
GraphAware®
public class Villain extends Character{
…
}
public class Hero extends Character {
…

}
@NodeEntity(label = "Hero")
@NodeEntity(label = "Villain")
Node Entities - Team
GraphAware®
@NodeEntity(label = "Team")
public class Team {
@GraphId private Long graphId;
private Long id;
private String name;
private String operationsBase;
@Relationship(type = "MEMBER_OF",
direction = "INCOMING")
private Set<Character> members = new HashSet<>();
public Team() {
}
Node Entities - Comic
GraphAware®
@NodeEntity(label = "Comic")
private Long id;
private String title;
private String author;
private String artist;
private boolean available;
private Binding binding;
@DateLong
private Date onSaleDate;
@Relationship(type = "FEATURED_IN", direction = Relationship.INCOMING)
private Set<Character> characters = new HashSet<>();
public enum Binding {
SOFT,
LEATHER,
CLOTH,
HARD
}
public class Comic {
@GraphId private Long graphId;
Node Entities - Game
GraphAware®
@NodeEntity(label = "Game")
public class Game {
@Graphid private Long graphId;
private Long id;
private String title;
private int year;
private String publisher;
private Rating rating;
private Set<Platform> platforms;
@Relationship(type = "FEATURED_IN",
direction = Relationship.INCOMING)
private Set<Character> characters = new HashSet<>();
public enum Platform {
PC,
WII,
XBOX_360,
PLAYSTATION_3
}
Node Entities
GraphAware®
@Convert(UrlConverter.class)
private URL imdbUrl;
@Relationship(type = "STARS")
private Set<Role> stars;
public class UrlConverter implements
AttributeConverter<URL, String> {
@Override
public String toGraphProperty(URL value) {
return value == null? null : value.toString();
}
@Override
public URL toEntityAttribute(String value) {
try {
return new URL(value);
} catch (MalformedURLException e) {
e.printStackTrace();
}
return null;
}

}
@NodeEntity(label = "Movie")
public class Movie {
@GraphId private Long graphId;
private Long id;
private String title;
private int year;
private Rating rating;
Relationship Entities
GraphAware®
@RelationshipEntity(type = "STARS")
public class Role {
private Long id;
@StartNode private Movie movie;
@EndNode private Character character;
private String actor;
Repositories
GraphAware®
public interface CharacterRepository<T extends Character> extends GraphRepository<T> {
List<T> findByNameLike(String keyword);
@Query(" MATCH (c:Character) WHERE ID(c)={characterId} " +
"OPTIONAL MATCH (c)-[:ALLY_OF|ENEMY_OF]-(other) " +
"WITH c, collect(other) as others " +
"OPTIONAL MATCH (c)-[:MEMBER_OF|FEATURED_IN]->
()<-[:MEMBER_OF|FEATURED_IN]-(teamMember) " +
"WITH c, others + collect(teamMember) as othersWithTeam " +
"OPTIONAL MATCH (c)<-[:STARS]-()-[:STARS]->(actors) " +
"WITH othersWithTeam + collect(actors) as allOthers " +
"UNWIND allOthers as related " +
"WITH count(*) as count, related " +
"RETURN related ORDER BY count DESC")
List<Character> findRelatedCharacters(@Param("characterId") Long id);
Repositories
GraphAware®
public interface HeroRepository extends
CharacterRepository<Hero> {
}
public interface VillainRepository extends
CharacterRepository<Villain>{
}
Services
GraphAware®
@Service
public class CharacterService {
@Autowired CharacterRepository<Character> characterRepository;
@Autowired HeroRepository heroRepository;
@Autowired VillainRepository villainRepository;
public List<CharacterSummary> searchHeroesByKeyword(String keyword) {
return summarizeCharacter(heroRepository.findByNameLike(getKeywordParam(keyword))
}
public List<Character> findRelatedCharacters(Long id) {
return characterRepository.findRelatedCharacters(id);
}
public Character getById(Long id) {
return characterRepository.findById(id);
}
…
}
Controller
GraphAware®
@RestController
@RequestMapping("/api/")
public class CharacterController {
@Autowired CharacterService characterService;
@RequestMapping(value = "characters/{id}", method = RequestMethod.GET)
public Character getCharacterById(@PathVariable("id") Long id) {
return characterService.getById(id);
}
@RequestMapping(value = "characters/{id}/related", method = RequestMethod.GET)
public List<Character> getRelatedCharacters(@PathVariable("id") Long id) {
return characterService.findRelatedCharacters(id);
}
SDN 4.1 / Neo4j OGM Driver
Configuration
GraphAware®
driver=org.neo4j.ogm.drivers.http.driver.HttpDriver
URI=http://neo4j:neo@localhost:7474
Auto configure with ogm.properties
Java Configuration
Components.configuration()
.driverConfiguration()
.setDriverClassName("org.neo4j.ogm.drivers.http.driver.HttpDriver")
.setURI("http://user:password@localhost:7474")
SDN 4.1 Neo4j Configuration
GraphAware®
@Configuration
@ComponentScan("com.graphaware.superhero")
@EnableAutoConfiguration
@EnableTransactionManagement
@EnableNeo4jRepositories("com.graphaware.superhero.repository")
public class Application extends Neo4jConfiguration {
public static void main(String[] args) {
SpringApplication.run(Application.class, args);
}
…
SDN 4.1 Neo4j Configuration
GraphAware®
…
public class Application extends Neo4jConfiguration {
@Override
@Bean
public SessionFactory getSessionFactory() {
return new SessionFactory("com.graphaware.superhero.domain");
}
@Override
@Bean
@Scope(value = "session", proxyMode = ScopedProxyMode.TARGET_CLASS)
public Session getSession() throws Exception {
return super.getSession();
}
Up, up and away!
GraphAware®
mvn clean spring-boot:run
Documentation: http://docs.spring.io/spring-data/neo4j/docs/
current/reference/html/

Code: https://github.com/spring-projects/spring-data-neo4j

Sample Applications: http://github.com/neo4j-examples?
query=sdn4
Where to find stuff
GraphAware®
Where to find us
GraphAware®
Luanne Misquitta
Adam George
Michal “Batman” Bachman
Vince Bickers
Getting Help
StackOverflow (spring-data-neo4j-4, neo4j-ogm)

Slack: neo4j-users (neo4j-sdn)

Email the team: spring-data-neo4j@neotechnology.com

Raise issues: https://jira.spring.io/browse/DATAGRAPH

Twitter: Follow @graph_aware for pro tips

Blog: http://graphaware.com/blog
You’re a Graph Hero!
www.graphaware.com

@graph_aware
Thank you
GraphAware®

More Related Content

What's hot

Benefits of Using MongoDB Over RDBMS (At An Evening with MongoDB Minneapolis ...
Benefits of Using MongoDB Over RDBMS (At An Evening with MongoDB Minneapolis ...Benefits of Using MongoDB Over RDBMS (At An Evening with MongoDB Minneapolis ...
Benefits of Using MongoDB Over RDBMS (At An Evening with MongoDB Minneapolis ...MongoDB
 
(Big) Data Serialization with Avro and Protobuf
(Big) Data Serialization with Avro and Protobuf(Big) Data Serialization with Avro and Protobuf
(Big) Data Serialization with Avro and ProtobufGuido Schmutz
 
The openCypher Project - An Open Graph Query Language
The openCypher Project - An Open Graph Query LanguageThe openCypher Project - An Open Graph Query Language
The openCypher Project - An Open Graph Query LanguageNeo4j
 
Datastax enterprise presentation
Datastax enterprise presentationDatastax enterprise presentation
Datastax enterprise presentationDuyhai Doan
 
Extending Cassandra with Doradus OLAP for High Performance Analytics
Extending Cassandra with Doradus OLAP for High Performance AnalyticsExtending Cassandra with Doradus OLAP for High Performance Analytics
Extending Cassandra with Doradus OLAP for High Performance Analyticsrandyguck
 
OrientDB the graph database
OrientDB the graph databaseOrientDB the graph database
OrientDB the graph databaseArtem Orobets
 
Webinar: Index Tuning and Evaluation
Webinar: Index Tuning and EvaluationWebinar: Index Tuning and Evaluation
Webinar: Index Tuning and EvaluationMongoDB
 
JS Fest 2019/Autumn. Maciej Treder. Angular Schematics - Develop for developers
JS Fest 2019/Autumn. Maciej Treder. Angular Schematics - Develop for developersJS Fest 2019/Autumn. Maciej Treder. Angular Schematics - Develop for developers
JS Fest 2019/Autumn. Maciej Treder. Angular Schematics - Develop for developersJSFestUA
 
2011 Mongo FR - Indexing in MongoDB
2011 Mongo FR - Indexing in MongoDB2011 Mongo FR - Indexing in MongoDB
2011 Mongo FR - Indexing in MongoDBantoinegirbal
 
Cubes - Lightweight Python OLAP (EuroPython 2012 talk)
Cubes - Lightweight Python OLAP (EuroPython 2012 talk)Cubes - Lightweight Python OLAP (EuroPython 2012 talk)
Cubes - Lightweight Python OLAP (EuroPython 2012 talk)Stefan Urbanek
 
Introducing DataFrames in Spark for Large Scale Data Science
Introducing DataFrames in Spark for Large Scale Data ScienceIntroducing DataFrames in Spark for Large Scale Data Science
Introducing DataFrames in Spark for Large Scale Data ScienceDatabricks
 
Aggregation Framework in MongoDB Overview Part-1
Aggregation Framework in MongoDB Overview Part-1Aggregation Framework in MongoDB Overview Part-1
Aggregation Framework in MongoDB Overview Part-1Anuj Jain
 
OrientDB vs Neo4j - and an introduction to NoSQL databases
OrientDB vs Neo4j - and an introduction to NoSQL databasesOrientDB vs Neo4j - and an introduction to NoSQL databases
OrientDB vs Neo4j - and an introduction to NoSQL databasesCurtis Mosters
 
Aggregation Framework MongoDB Days Munich
Aggregation Framework MongoDB Days MunichAggregation Framework MongoDB Days Munich
Aggregation Framework MongoDB Days MunichNorberto Leite
 
Cassandra 3 new features 2016
Cassandra 3 new features 2016Cassandra 3 new features 2016
Cassandra 3 new features 2016Duyhai Doan
 
Webinar: What's New in Solr 6
Webinar: What's New in Solr 6Webinar: What's New in Solr 6
Webinar: What's New in Solr 6Lucidworks
 
Datastax day 2016 : Cassandra data modeling basics
Datastax day 2016 : Cassandra data modeling basicsDatastax day 2016 : Cassandra data modeling basics
Datastax day 2016 : Cassandra data modeling basicsDuyhai Doan
 

What's hot (20)

Benefits of Using MongoDB Over RDBMS (At An Evening with MongoDB Minneapolis ...
Benefits of Using MongoDB Over RDBMS (At An Evening with MongoDB Minneapolis ...Benefits of Using MongoDB Over RDBMS (At An Evening with MongoDB Minneapolis ...
Benefits of Using MongoDB Over RDBMS (At An Evening with MongoDB Minneapolis ...
 
(Big) Data Serialization with Avro and Protobuf
(Big) Data Serialization with Avro and Protobuf(Big) Data Serialization with Avro and Protobuf
(Big) Data Serialization with Avro and Protobuf
 
The openCypher Project - An Open Graph Query Language
The openCypher Project - An Open Graph Query LanguageThe openCypher Project - An Open Graph Query Language
The openCypher Project - An Open Graph Query Language
 
Datastax enterprise presentation
Datastax enterprise presentationDatastax enterprise presentation
Datastax enterprise presentation
 
Extending Cassandra with Doradus OLAP for High Performance Analytics
Extending Cassandra with Doradus OLAP for High Performance AnalyticsExtending Cassandra with Doradus OLAP for High Performance Analytics
Extending Cassandra with Doradus OLAP for High Performance Analytics
 
OrientDB the graph database
OrientDB the graph databaseOrientDB the graph database
OrientDB the graph database
 
MongoDB crud
MongoDB crudMongoDB crud
MongoDB crud
 
Webinar: Index Tuning and Evaluation
Webinar: Index Tuning and EvaluationWebinar: Index Tuning and Evaluation
Webinar: Index Tuning and Evaluation
 
JS Fest 2019/Autumn. Maciej Treder. Angular Schematics - Develop for developers
JS Fest 2019/Autumn. Maciej Treder. Angular Schematics - Develop for developersJS Fest 2019/Autumn. Maciej Treder. Angular Schematics - Develop for developers
JS Fest 2019/Autumn. Maciej Treder. Angular Schematics - Develop for developers
 
2011 Mongo FR - Indexing in MongoDB
2011 Mongo FR - Indexing in MongoDB2011 Mongo FR - Indexing in MongoDB
2011 Mongo FR - Indexing in MongoDB
 
Cubes - Lightweight Python OLAP (EuroPython 2012 talk)
Cubes - Lightweight Python OLAP (EuroPython 2012 talk)Cubes - Lightweight Python OLAP (EuroPython 2012 talk)
Cubes - Lightweight Python OLAP (EuroPython 2012 talk)
 
Introducing DataFrames in Spark for Large Scale Data Science
Introducing DataFrames in Spark for Large Scale Data ScienceIntroducing DataFrames in Spark for Large Scale Data Science
Introducing DataFrames in Spark for Large Scale Data Science
 
Aggregation Framework in MongoDB Overview Part-1
Aggregation Framework in MongoDB Overview Part-1Aggregation Framework in MongoDB Overview Part-1
Aggregation Framework in MongoDB Overview Part-1
 
Introduction to solr
Introduction to solrIntroduction to solr
Introduction to solr
 
OrientDB vs Neo4j - and an introduction to NoSQL databases
OrientDB vs Neo4j - and an introduction to NoSQL databasesOrientDB vs Neo4j - and an introduction to NoSQL databases
OrientDB vs Neo4j - and an introduction to NoSQL databases
 
Aggregation Framework MongoDB Days Munich
Aggregation Framework MongoDB Days MunichAggregation Framework MongoDB Days Munich
Aggregation Framework MongoDB Days Munich
 
Cassandra 3 new features 2016
Cassandra 3 new features 2016Cassandra 3 new features 2016
Cassandra 3 new features 2016
 
Webinar: What's New in Solr 6
Webinar: What's New in Solr 6Webinar: What's New in Solr 6
Webinar: What's New in Solr 6
 
Green dao
Green daoGreen dao
Green dao
 
Datastax day 2016 : Cassandra data modeling basics
Datastax day 2016 : Cassandra data modeling basicsDatastax day 2016 : Cassandra data modeling basics
Datastax day 2016 : Cassandra data modeling basics
 

Viewers also liked

GraphConnect Europe 2016 - Who Cares What Beyonce Ate for Lunch? - Alicia Powers
GraphConnect Europe 2016 - Who Cares What Beyonce Ate for Lunch? - Alicia PowersGraphConnect Europe 2016 - Who Cares What Beyonce Ate for Lunch? - Alicia Powers
GraphConnect Europe 2016 - Who Cares What Beyonce Ate for Lunch? - Alicia PowersNeo4j
 
GraphConnect Europe 2016 - Navigating All the Knowledge - James Weaver
GraphConnect Europe 2016 - Navigating All the Knowledge - James WeaverGraphConnect Europe 2016 - Navigating All the Knowledge - James Weaver
GraphConnect Europe 2016 - Navigating All the Knowledge - James WeaverNeo4j
 
GraphConnect Europe 2016 - Pushing the Evolution of Software Analytics with G...
GraphConnect Europe 2016 - Pushing the Evolution of Software Analytics with G...GraphConnect Europe 2016 - Pushing the Evolution of Software Analytics with G...
GraphConnect Europe 2016 - Pushing the Evolution of Software Analytics with G...Neo4j
 
GraphConnect Europe 2016 - Moving Graphs to Production at Scale - Ian Robinson
GraphConnect Europe 2016 - Moving Graphs to Production at Scale - Ian RobinsonGraphConnect Europe 2016 - Moving Graphs to Production at Scale - Ian Robinson
GraphConnect Europe 2016 - Moving Graphs to Production at Scale - Ian RobinsonNeo4j
 
GraphConnect Europe 2016 - Tuning Your Cypher - Petra Selmer, Mark Needham
GraphConnect Europe 2016 - Tuning Your Cypher - Petra Selmer, Mark NeedhamGraphConnect Europe 2016 - Tuning Your Cypher - Petra Selmer, Mark Needham
GraphConnect Europe 2016 - Tuning Your Cypher - Petra Selmer, Mark NeedhamNeo4j
 
GraphConnect Europe 2016 - Creating the Best Teams Ever with Collaborative Fi...
GraphConnect Europe 2016 - Creating the Best Teams Ever with Collaborative Fi...GraphConnect Europe 2016 - Creating the Best Teams Ever with Collaborative Fi...
GraphConnect Europe 2016 - Creating the Best Teams Ever with Collaborative Fi...Neo4j
 
GraphConnect Europe 2016 - Inside the Spider’s Web: Dependency Management wit...
GraphConnect Europe 2016 - Inside the Spider’s Web: Dependency Management wit...GraphConnect Europe 2016 - Inside the Spider’s Web: Dependency Management wit...
GraphConnect Europe 2016 - Inside the Spider’s Web: Dependency Management wit...Neo4j
 
GraphConnect Europe 2016 - Faster Lap Times with Neo4j - Srinivas Suravarapu
GraphConnect Europe 2016 - Faster Lap Times with Neo4j - Srinivas SuravarapuGraphConnect Europe 2016 - Faster Lap Times with Neo4j - Srinivas Suravarapu
GraphConnect Europe 2016 - Faster Lap Times with Neo4j - Srinivas SuravarapuNeo4j
 
GraphConnect Europe 2016 - Governing Multichannel Services with Graphs - Albe...
GraphConnect Europe 2016 - Governing Multichannel Services with Graphs - Albe...GraphConnect Europe 2016 - Governing Multichannel Services with Graphs - Albe...
GraphConnect Europe 2016 - Governing Multichannel Services with Graphs - Albe...Neo4j
 
GraphConnect Europe 2016 - How Go and Neo4j enabled the FT to Deliver at Spee...
GraphConnect Europe 2016 - How Go and Neo4j enabled the FT to Deliver at Spee...GraphConnect Europe 2016 - How Go and Neo4j enabled the FT to Deliver at Spee...
GraphConnect Europe 2016 - How Go and Neo4j enabled the FT to Deliver at Spee...Neo4j
 
Slides from GraphDay Santa Clara
Slides from GraphDay Santa ClaraSlides from GraphDay Santa Clara
Slides from GraphDay Santa ClaraNeo4j
 
Intro to Cypher for the SQL Developer
Intro to Cypher for the SQL DeveloperIntro to Cypher for the SQL Developer
Intro to Cypher for the SQL DeveloperNeo4j
 
GraphConnect Europe 2016 - NoSQL Polyglot Persistence: Tools and Integrations...
GraphConnect Europe 2016 - NoSQL Polyglot Persistence: Tools and Integrations...GraphConnect Europe 2016 - NoSQL Polyglot Persistence: Tools and Integrations...
GraphConnect Europe 2016 - NoSQL Polyglot Persistence: Tools and Integrations...Neo4j
 
GraphConnect Europe 2016 - Enterprise Data Integration with a new JDBC Driver...
GraphConnect Europe 2016 - Enterprise Data Integration with a new JDBC Driver...GraphConnect Europe 2016 - Enterprise Data Integration with a new JDBC Driver...
GraphConnect Europe 2016 - Enterprise Data Integration with a new JDBC Driver...Neo4j
 
GraphTalk Berlin - Neo4j und FirstSpirit
GraphTalk Berlin - Neo4j und FirstSpiritGraphTalk Berlin - Neo4j und FirstSpirit
GraphTalk Berlin - Neo4j und FirstSpiritNeo4j
 
GraphConnect Europe 2016 - Digitalization and Optimizing Business Performance...
GraphConnect Europe 2016 - Digitalization and Optimizing Business Performance...GraphConnect Europe 2016 - Digitalization and Optimizing Business Performance...
GraphConnect Europe 2016 - Digitalization and Optimizing Business Performance...Neo4j
 
GraphConnect Europe 2016 - Securely Deploying Neo4j into AWS - Benjamin Nussbaum
GraphConnect Europe 2016 - Securely Deploying Neo4j into AWS - Benjamin NussbaumGraphConnect Europe 2016 - Securely Deploying Neo4j into AWS - Benjamin Nussbaum
GraphConnect Europe 2016 - Securely Deploying Neo4j into AWS - Benjamin NussbaumNeo4j
 
GraphConnect Europe 2016 - IoT - where do Graphs fit with Business Requiremen...
GraphConnect Europe 2016 - IoT - where do Graphs fit with Business Requiremen...GraphConnect Europe 2016 - IoT - where do Graphs fit with Business Requiremen...
GraphConnect Europe 2016 - IoT - where do Graphs fit with Business Requiremen...Neo4j
 
GraphConnect Europe 2016 - Building Consumer Trust through Transparency, Comp...
GraphConnect Europe 2016 - Building Consumer Trust through Transparency, Comp...GraphConnect Europe 2016 - Building Consumer Trust through Transparency, Comp...
GraphConnect Europe 2016 - Building Consumer Trust through Transparency, Comp...Neo4j
 
GraphConnect Europe 2016 - Building a Repository of Biomedical Ontologies wit...
GraphConnect Europe 2016 - Building a Repository of Biomedical Ontologies wit...GraphConnect Europe 2016 - Building a Repository of Biomedical Ontologies wit...
GraphConnect Europe 2016 - Building a Repository of Biomedical Ontologies wit...Neo4j
 

Viewers also liked (20)

GraphConnect Europe 2016 - Who Cares What Beyonce Ate for Lunch? - Alicia Powers
GraphConnect Europe 2016 - Who Cares What Beyonce Ate for Lunch? - Alicia PowersGraphConnect Europe 2016 - Who Cares What Beyonce Ate for Lunch? - Alicia Powers
GraphConnect Europe 2016 - Who Cares What Beyonce Ate for Lunch? - Alicia Powers
 
GraphConnect Europe 2016 - Navigating All the Knowledge - James Weaver
GraphConnect Europe 2016 - Navigating All the Knowledge - James WeaverGraphConnect Europe 2016 - Navigating All the Knowledge - James Weaver
GraphConnect Europe 2016 - Navigating All the Knowledge - James Weaver
 
GraphConnect Europe 2016 - Pushing the Evolution of Software Analytics with G...
GraphConnect Europe 2016 - Pushing the Evolution of Software Analytics with G...GraphConnect Europe 2016 - Pushing the Evolution of Software Analytics with G...
GraphConnect Europe 2016 - Pushing the Evolution of Software Analytics with G...
 
GraphConnect Europe 2016 - Moving Graphs to Production at Scale - Ian Robinson
GraphConnect Europe 2016 - Moving Graphs to Production at Scale - Ian RobinsonGraphConnect Europe 2016 - Moving Graphs to Production at Scale - Ian Robinson
GraphConnect Europe 2016 - Moving Graphs to Production at Scale - Ian Robinson
 
GraphConnect Europe 2016 - Tuning Your Cypher - Petra Selmer, Mark Needham
GraphConnect Europe 2016 - Tuning Your Cypher - Petra Selmer, Mark NeedhamGraphConnect Europe 2016 - Tuning Your Cypher - Petra Selmer, Mark Needham
GraphConnect Europe 2016 - Tuning Your Cypher - Petra Selmer, Mark Needham
 
GraphConnect Europe 2016 - Creating the Best Teams Ever with Collaborative Fi...
GraphConnect Europe 2016 - Creating the Best Teams Ever with Collaborative Fi...GraphConnect Europe 2016 - Creating the Best Teams Ever with Collaborative Fi...
GraphConnect Europe 2016 - Creating the Best Teams Ever with Collaborative Fi...
 
GraphConnect Europe 2016 - Inside the Spider’s Web: Dependency Management wit...
GraphConnect Europe 2016 - Inside the Spider’s Web: Dependency Management wit...GraphConnect Europe 2016 - Inside the Spider’s Web: Dependency Management wit...
GraphConnect Europe 2016 - Inside the Spider’s Web: Dependency Management wit...
 
GraphConnect Europe 2016 - Faster Lap Times with Neo4j - Srinivas Suravarapu
GraphConnect Europe 2016 - Faster Lap Times with Neo4j - Srinivas SuravarapuGraphConnect Europe 2016 - Faster Lap Times with Neo4j - Srinivas Suravarapu
GraphConnect Europe 2016 - Faster Lap Times with Neo4j - Srinivas Suravarapu
 
GraphConnect Europe 2016 - Governing Multichannel Services with Graphs - Albe...
GraphConnect Europe 2016 - Governing Multichannel Services with Graphs - Albe...GraphConnect Europe 2016 - Governing Multichannel Services with Graphs - Albe...
GraphConnect Europe 2016 - Governing Multichannel Services with Graphs - Albe...
 
GraphConnect Europe 2016 - How Go and Neo4j enabled the FT to Deliver at Spee...
GraphConnect Europe 2016 - How Go and Neo4j enabled the FT to Deliver at Spee...GraphConnect Europe 2016 - How Go and Neo4j enabled the FT to Deliver at Spee...
GraphConnect Europe 2016 - How Go and Neo4j enabled the FT to Deliver at Spee...
 
Slides from GraphDay Santa Clara
Slides from GraphDay Santa ClaraSlides from GraphDay Santa Clara
Slides from GraphDay Santa Clara
 
Intro to Cypher for the SQL Developer
Intro to Cypher for the SQL DeveloperIntro to Cypher for the SQL Developer
Intro to Cypher for the SQL Developer
 
GraphConnect Europe 2016 - NoSQL Polyglot Persistence: Tools and Integrations...
GraphConnect Europe 2016 - NoSQL Polyglot Persistence: Tools and Integrations...GraphConnect Europe 2016 - NoSQL Polyglot Persistence: Tools and Integrations...
GraphConnect Europe 2016 - NoSQL Polyglot Persistence: Tools and Integrations...
 
GraphConnect Europe 2016 - Enterprise Data Integration with a new JDBC Driver...
GraphConnect Europe 2016 - Enterprise Data Integration with a new JDBC Driver...GraphConnect Europe 2016 - Enterprise Data Integration with a new JDBC Driver...
GraphConnect Europe 2016 - Enterprise Data Integration with a new JDBC Driver...
 
GraphTalk Berlin - Neo4j und FirstSpirit
GraphTalk Berlin - Neo4j und FirstSpiritGraphTalk Berlin - Neo4j und FirstSpirit
GraphTalk Berlin - Neo4j und FirstSpirit
 
GraphConnect Europe 2016 - Digitalization and Optimizing Business Performance...
GraphConnect Europe 2016 - Digitalization and Optimizing Business Performance...GraphConnect Europe 2016 - Digitalization and Optimizing Business Performance...
GraphConnect Europe 2016 - Digitalization and Optimizing Business Performance...
 
GraphConnect Europe 2016 - Securely Deploying Neo4j into AWS - Benjamin Nussbaum
GraphConnect Europe 2016 - Securely Deploying Neo4j into AWS - Benjamin NussbaumGraphConnect Europe 2016 - Securely Deploying Neo4j into AWS - Benjamin Nussbaum
GraphConnect Europe 2016 - Securely Deploying Neo4j into AWS - Benjamin Nussbaum
 
GraphConnect Europe 2016 - IoT - where do Graphs fit with Business Requiremen...
GraphConnect Europe 2016 - IoT - where do Graphs fit with Business Requiremen...GraphConnect Europe 2016 - IoT - where do Graphs fit with Business Requiremen...
GraphConnect Europe 2016 - IoT - where do Graphs fit with Business Requiremen...
 
GraphConnect Europe 2016 - Building Consumer Trust through Transparency, Comp...
GraphConnect Europe 2016 - Building Consumer Trust through Transparency, Comp...GraphConnect Europe 2016 - Building Consumer Trust through Transparency, Comp...
GraphConnect Europe 2016 - Building Consumer Trust through Transparency, Comp...
 
GraphConnect Europe 2016 - Building a Repository of Biomedical Ontologies wit...
GraphConnect Europe 2016 - Building a Repository of Biomedical Ontologies wit...GraphConnect Europe 2016 - Building a Repository of Biomedical Ontologies wit...
GraphConnect Europe 2016 - Building a Repository of Biomedical Ontologies wit...
 

Similar to GraphConnect Europe 2016 - Building Spring Data Neo4j 4.1 Applications Like A Superhero - Luanne Misquitta

Introduction To Groovy 2005
Introduction To Groovy 2005Introduction To Groovy 2005
Introduction To Groovy 2005Tugdual Grall
 
Intro to GraphQL on Android with Apollo DroidconNYC 2017
Intro to GraphQL on Android with Apollo DroidconNYC 2017Intro to GraphQL on Android with Apollo DroidconNYC 2017
Intro to GraphQL on Android with Apollo DroidconNYC 2017Mike Nakhimovich
 
Using Neo4j from Java
Using Neo4j from JavaUsing Neo4j from Java
Using Neo4j from JavaNeo4j
 
Refactoring to Macros with Clojure
Refactoring to Macros with ClojureRefactoring to Macros with Clojure
Refactoring to Macros with ClojureDmitry Buzdin
 
Tomer Elmalem - GraphQL APIs: REST in Peace - Codemotion Milan 2017
Tomer Elmalem - GraphQL APIs: REST in Peace - Codemotion Milan 2017Tomer Elmalem - GraphQL APIs: REST in Peace - Codemotion Milan 2017
Tomer Elmalem - GraphQL APIs: REST in Peace - Codemotion Milan 2017Codemotion
 
MongoDB.local Berlin: Building a GraphQL API with MongoDB, Prisma and Typescript
MongoDB.local Berlin: Building a GraphQL API with MongoDB, Prisma and TypescriptMongoDB.local Berlin: Building a GraphQL API with MongoDB, Prisma and Typescript
MongoDB.local Berlin: Building a GraphQL API with MongoDB, Prisma and TypescriptMongoDB
 
Overview of GraphQL & Clients
Overview of GraphQL & ClientsOverview of GraphQL & Clients
Overview of GraphQL & ClientsPokai Chang
 
Neo4j-Databridge: Enterprise-scale ETL for Neo4j
Neo4j-Databridge: Enterprise-scale ETL for Neo4jNeo4j-Databridge: Enterprise-scale ETL for Neo4j
Neo4j-Databridge: Enterprise-scale ETL for Neo4jGraphAware
 
Object Graph Mapping with Spring Data Neo4j 3 - Nicki Watt & Michael Hunger @...
Object Graph Mapping with Spring Data Neo4j 3 - Nicki Watt & Michael Hunger @...Object Graph Mapping with Spring Data Neo4j 3 - Nicki Watt & Michael Hunger @...
Object Graph Mapping with Spring Data Neo4j 3 - Nicki Watt & Michael Hunger @...Neo4j
 
Data access 2.0? Please welcome: Spring Data!
Data access 2.0? Please welcome: Spring Data!Data access 2.0? Please welcome: Spring Data!
Data access 2.0? Please welcome: Spring Data!Oliver Gierke
 
Annotation processing and code gen
Annotation processing and code genAnnotation processing and code gen
Annotation processing and code genkoji lin
 
GraphQL Los Angeles Meetup Slides
GraphQL Los Angeles Meetup SlidesGraphQL Los Angeles Meetup Slides
GraphQL Los Angeles Meetup SlidesGrant Miller
 
Hands On Spring Data
Hands On Spring DataHands On Spring Data
Hands On Spring DataEric Bottard
 
Easy data-with-spring-data-jpa
Easy data-with-spring-data-jpaEasy data-with-spring-data-jpa
Easy data-with-spring-data-jpaStaples
 
Domain-Driven Design with SeedStack
Domain-Driven Design with SeedStackDomain-Driven Design with SeedStack
Domain-Driven Design with SeedStackSeedStack
 
GraphQL & Prisma from Scratch
GraphQL & Prisma from ScratchGraphQL & Prisma from Scratch
GraphQL & Prisma from ScratchNikolas Burk
 
Painless Persistence in a Disconnected World
Painless Persistence in a Disconnected WorldPainless Persistence in a Disconnected World
Painless Persistence in a Disconnected WorldChristian Melchior
 
Scala @ TechMeetup Edinburgh
Scala @ TechMeetup EdinburghScala @ TechMeetup Edinburgh
Scala @ TechMeetup EdinburghStuart Roebuck
 
Big Data Day LA 2015 - Compiling DSLs for Diverse Execution Environments by Z...
Big Data Day LA 2015 - Compiling DSLs for Diverse Execution Environments by Z...Big Data Day LA 2015 - Compiling DSLs for Diverse Execution Environments by Z...
Big Data Day LA 2015 - Compiling DSLs for Diverse Execution Environments by Z...Data Con LA
 

Similar to GraphConnect Europe 2016 - Building Spring Data Neo4j 4.1 Applications Like A Superhero - Luanne Misquitta (20)

Introduction To Groovy 2005
Introduction To Groovy 2005Introduction To Groovy 2005
Introduction To Groovy 2005
 
Intro to GraphQL on Android with Apollo DroidconNYC 2017
Intro to GraphQL on Android with Apollo DroidconNYC 2017Intro to GraphQL on Android with Apollo DroidconNYC 2017
Intro to GraphQL on Android with Apollo DroidconNYC 2017
 
Using Neo4j from Java
Using Neo4j from JavaUsing Neo4j from Java
Using Neo4j from Java
 
Refactoring to Macros with Clojure
Refactoring to Macros with ClojureRefactoring to Macros with Clojure
Refactoring to Macros with Clojure
 
Tomer Elmalem - GraphQL APIs: REST in Peace - Codemotion Milan 2017
Tomer Elmalem - GraphQL APIs: REST in Peace - Codemotion Milan 2017Tomer Elmalem - GraphQL APIs: REST in Peace - Codemotion Milan 2017
Tomer Elmalem - GraphQL APIs: REST in Peace - Codemotion Milan 2017
 
MongoDB.local Berlin: Building a GraphQL API with MongoDB, Prisma and Typescript
MongoDB.local Berlin: Building a GraphQL API with MongoDB, Prisma and TypescriptMongoDB.local Berlin: Building a GraphQL API with MongoDB, Prisma and Typescript
MongoDB.local Berlin: Building a GraphQL API with MongoDB, Prisma and Typescript
 
Overview of GraphQL & Clients
Overview of GraphQL & ClientsOverview of GraphQL & Clients
Overview of GraphQL & Clients
 
Neo4j-Databridge: Enterprise-scale ETL for Neo4j
Neo4j-Databridge: Enterprise-scale ETL for Neo4jNeo4j-Databridge: Enterprise-scale ETL for Neo4j
Neo4j-Databridge: Enterprise-scale ETL for Neo4j
 
Play á la Rails
Play á la RailsPlay á la Rails
Play á la Rails
 
Object Graph Mapping with Spring Data Neo4j 3 - Nicki Watt & Michael Hunger @...
Object Graph Mapping with Spring Data Neo4j 3 - Nicki Watt & Michael Hunger @...Object Graph Mapping with Spring Data Neo4j 3 - Nicki Watt & Michael Hunger @...
Object Graph Mapping with Spring Data Neo4j 3 - Nicki Watt & Michael Hunger @...
 
Data access 2.0? Please welcome: Spring Data!
Data access 2.0? Please welcome: Spring Data!Data access 2.0? Please welcome: Spring Data!
Data access 2.0? Please welcome: Spring Data!
 
Annotation processing and code gen
Annotation processing and code genAnnotation processing and code gen
Annotation processing and code gen
 
GraphQL Los Angeles Meetup Slides
GraphQL Los Angeles Meetup SlidesGraphQL Los Angeles Meetup Slides
GraphQL Los Angeles Meetup Slides
 
Hands On Spring Data
Hands On Spring DataHands On Spring Data
Hands On Spring Data
 
Easy data-with-spring-data-jpa
Easy data-with-spring-data-jpaEasy data-with-spring-data-jpa
Easy data-with-spring-data-jpa
 
Domain-Driven Design with SeedStack
Domain-Driven Design with SeedStackDomain-Driven Design with SeedStack
Domain-Driven Design with SeedStack
 
GraphQL & Prisma from Scratch
GraphQL & Prisma from ScratchGraphQL & Prisma from Scratch
GraphQL & Prisma from Scratch
 
Painless Persistence in a Disconnected World
Painless Persistence in a Disconnected WorldPainless Persistence in a Disconnected World
Painless Persistence in a Disconnected World
 
Scala @ TechMeetup Edinburgh
Scala @ TechMeetup EdinburghScala @ TechMeetup Edinburgh
Scala @ TechMeetup Edinburgh
 
Big Data Day LA 2015 - Compiling DSLs for Diverse Execution Environments by Z...
Big Data Day LA 2015 - Compiling DSLs for Diverse Execution Environments by Z...Big Data Day LA 2015 - Compiling DSLs for Diverse Execution Environments by Z...
Big Data Day LA 2015 - Compiling DSLs for Diverse Execution Environments by Z...
 

More from Neo4j

Connecting the Dots for Information Discovery.pdf
Connecting the Dots for Information Discovery.pdfConnecting the Dots for Information Discovery.pdf
Connecting the Dots for Information Discovery.pdfNeo4j
 
ISDEFE - GraphSummit Madrid - ARETA: Aviation Real-Time Emissions Token Accre...
ISDEFE - GraphSummit Madrid - ARETA: Aviation Real-Time Emissions Token Accre...ISDEFE - GraphSummit Madrid - ARETA: Aviation Real-Time Emissions Token Accre...
ISDEFE - GraphSummit Madrid - ARETA: Aviation Real-Time Emissions Token Accre...Neo4j
 
BBVA - GraphSummit Madrid - Caso de éxito en BBVA: Optimizando con grafos
BBVA - GraphSummit Madrid - Caso de éxito en BBVA: Optimizando con grafosBBVA - GraphSummit Madrid - Caso de éxito en BBVA: Optimizando con grafos
BBVA - GraphSummit Madrid - Caso de éxito en BBVA: Optimizando con grafosNeo4j
 
Graph Everywhere - Josep Taruella - Por qué Graph Data Science en tus modelos...
Graph Everywhere - Josep Taruella - Por qué Graph Data Science en tus modelos...Graph Everywhere - Josep Taruella - Por qué Graph Data Science en tus modelos...
Graph Everywhere - Josep Taruella - Por qué Graph Data Science en tus modelos...Neo4j
 
GraphSummit Madrid - Product Vision and Roadmap - Luis Salvador Neo4j
GraphSummit Madrid - Product Vision and Roadmap - Luis Salvador Neo4jGraphSummit Madrid - Product Vision and Roadmap - Luis Salvador Neo4j
GraphSummit Madrid - Product Vision and Roadmap - Luis Salvador Neo4jNeo4j
 
Neo4j_Exploring the Impact of Graph Technology on Financial Services.pdf
Neo4j_Exploring the Impact of Graph Technology on Financial Services.pdfNeo4j_Exploring the Impact of Graph Technology on Financial Services.pdf
Neo4j_Exploring the Impact of Graph Technology on Financial Services.pdfNeo4j
 
Rabobank_Exploring the Impact of Graph Technology on Financial Services.pdf
Rabobank_Exploring the Impact of Graph Technology on Financial Services.pdfRabobank_Exploring the Impact of Graph Technology on Financial Services.pdf
Rabobank_Exploring the Impact of Graph Technology on Financial Services.pdfNeo4j
 
Webinar - IA generativa e grafi Neo4j: RAG time!
Webinar - IA generativa e grafi Neo4j: RAG time!Webinar - IA generativa e grafi Neo4j: RAG time!
Webinar - IA generativa e grafi Neo4j: RAG time!Neo4j
 
IA Generativa y Grafos de Neo4j: RAG time
IA Generativa y Grafos de Neo4j: RAG timeIA Generativa y Grafos de Neo4j: RAG time
IA Generativa y Grafos de Neo4j: RAG timeNeo4j
 
Neo4j: Data Engineering for RAG (retrieval augmented generation)
Neo4j: Data Engineering for RAG (retrieval augmented generation)Neo4j: Data Engineering for RAG (retrieval augmented generation)
Neo4j: Data Engineering for RAG (retrieval augmented generation)Neo4j
 
Neo4j Graph Summit 2024 Workshop - EMEA - Breda_and_Munchen.pdf
Neo4j Graph Summit 2024 Workshop - EMEA - Breda_and_Munchen.pdfNeo4j Graph Summit 2024 Workshop - EMEA - Breda_and_Munchen.pdf
Neo4j Graph Summit 2024 Workshop - EMEA - Breda_and_Munchen.pdfNeo4j
 
Enabling GenAI Breakthroughs with Knowledge Graphs
Enabling GenAI Breakthroughs with Knowledge GraphsEnabling GenAI Breakthroughs with Knowledge Graphs
Enabling GenAI Breakthroughs with Knowledge GraphsNeo4j
 
Neo4j_Anurag Tandon_Product Vision and Roadmap.Benelux.pptx.pdf
Neo4j_Anurag Tandon_Product Vision and Roadmap.Benelux.pptx.pdfNeo4j_Anurag Tandon_Product Vision and Roadmap.Benelux.pptx.pdf
Neo4j_Anurag Tandon_Product Vision and Roadmap.Benelux.pptx.pdfNeo4j
 
Neo4j Jesus Barrasa The Art of the Possible with Graph
Neo4j Jesus Barrasa The Art of the Possible with GraphNeo4j Jesus Barrasa The Art of the Possible with Graph
Neo4j Jesus Barrasa The Art of the Possible with GraphNeo4j
 
SWIFT: Maintaining Critical Standards in the Financial Services Industry with...
SWIFT: Maintaining Critical Standards in the Financial Services Industry with...SWIFT: Maintaining Critical Standards in the Financial Services Industry with...
SWIFT: Maintaining Critical Standards in the Financial Services Industry with...Neo4j
 
Deloitte & Red Cross: Talk to your data with Knowledge-enriched Generative AI
Deloitte & Red Cross: Talk to your data with Knowledge-enriched Generative AIDeloitte & Red Cross: Talk to your data with Knowledge-enriched Generative AI
Deloitte & Red Cross: Talk to your data with Knowledge-enriched Generative AINeo4j
 
Ingka Digital: Linked Metadata by Design
Ingka Digital: Linked Metadata by DesignIngka Digital: Linked Metadata by Design
Ingka Digital: Linked Metadata by DesignNeo4j
 
Discover Neo4j Aura_ The Future of Graph Database-as-a-Service Workshop_3.13.24
Discover Neo4j Aura_ The Future of Graph Database-as-a-Service Workshop_3.13.24Discover Neo4j Aura_ The Future of Graph Database-as-a-Service Workshop_3.13.24
Discover Neo4j Aura_ The Future of Graph Database-as-a-Service Workshop_3.13.24Neo4j
 
GraphSummit Copenhagen 2024 - Neo4j Vision and Roadmap.pptx
GraphSummit Copenhagen 2024 - Neo4j Vision and Roadmap.pptxGraphSummit Copenhagen 2024 - Neo4j Vision and Roadmap.pptx
GraphSummit Copenhagen 2024 - Neo4j Vision and Roadmap.pptxNeo4j
 
Emil Eifrem at GraphSummit Copenhagen 2024 - The Art of the Possible.pptx
Emil Eifrem at GraphSummit Copenhagen 2024 - The Art of the Possible.pptxEmil Eifrem at GraphSummit Copenhagen 2024 - The Art of the Possible.pptx
Emil Eifrem at GraphSummit Copenhagen 2024 - The Art of the Possible.pptxNeo4j
 

More from Neo4j (20)

Connecting the Dots for Information Discovery.pdf
Connecting the Dots for Information Discovery.pdfConnecting the Dots for Information Discovery.pdf
Connecting the Dots for Information Discovery.pdf
 
ISDEFE - GraphSummit Madrid - ARETA: Aviation Real-Time Emissions Token Accre...
ISDEFE - GraphSummit Madrid - ARETA: Aviation Real-Time Emissions Token Accre...ISDEFE - GraphSummit Madrid - ARETA: Aviation Real-Time Emissions Token Accre...
ISDEFE - GraphSummit Madrid - ARETA: Aviation Real-Time Emissions Token Accre...
 
BBVA - GraphSummit Madrid - Caso de éxito en BBVA: Optimizando con grafos
BBVA - GraphSummit Madrid - Caso de éxito en BBVA: Optimizando con grafosBBVA - GraphSummit Madrid - Caso de éxito en BBVA: Optimizando con grafos
BBVA - GraphSummit Madrid - Caso de éxito en BBVA: Optimizando con grafos
 
Graph Everywhere - Josep Taruella - Por qué Graph Data Science en tus modelos...
Graph Everywhere - Josep Taruella - Por qué Graph Data Science en tus modelos...Graph Everywhere - Josep Taruella - Por qué Graph Data Science en tus modelos...
Graph Everywhere - Josep Taruella - Por qué Graph Data Science en tus modelos...
 
GraphSummit Madrid - Product Vision and Roadmap - Luis Salvador Neo4j
GraphSummit Madrid - Product Vision and Roadmap - Luis Salvador Neo4jGraphSummit Madrid - Product Vision and Roadmap - Luis Salvador Neo4j
GraphSummit Madrid - Product Vision and Roadmap - Luis Salvador Neo4j
 
Neo4j_Exploring the Impact of Graph Technology on Financial Services.pdf
Neo4j_Exploring the Impact of Graph Technology on Financial Services.pdfNeo4j_Exploring the Impact of Graph Technology on Financial Services.pdf
Neo4j_Exploring the Impact of Graph Technology on Financial Services.pdf
 
Rabobank_Exploring the Impact of Graph Technology on Financial Services.pdf
Rabobank_Exploring the Impact of Graph Technology on Financial Services.pdfRabobank_Exploring the Impact of Graph Technology on Financial Services.pdf
Rabobank_Exploring the Impact of Graph Technology on Financial Services.pdf
 
Webinar - IA generativa e grafi Neo4j: RAG time!
Webinar - IA generativa e grafi Neo4j: RAG time!Webinar - IA generativa e grafi Neo4j: RAG time!
Webinar - IA generativa e grafi Neo4j: RAG time!
 
IA Generativa y Grafos de Neo4j: RAG time
IA Generativa y Grafos de Neo4j: RAG timeIA Generativa y Grafos de Neo4j: RAG time
IA Generativa y Grafos de Neo4j: RAG time
 
Neo4j: Data Engineering for RAG (retrieval augmented generation)
Neo4j: Data Engineering for RAG (retrieval augmented generation)Neo4j: Data Engineering for RAG (retrieval augmented generation)
Neo4j: Data Engineering for RAG (retrieval augmented generation)
 
Neo4j Graph Summit 2024 Workshop - EMEA - Breda_and_Munchen.pdf
Neo4j Graph Summit 2024 Workshop - EMEA - Breda_and_Munchen.pdfNeo4j Graph Summit 2024 Workshop - EMEA - Breda_and_Munchen.pdf
Neo4j Graph Summit 2024 Workshop - EMEA - Breda_and_Munchen.pdf
 
Enabling GenAI Breakthroughs with Knowledge Graphs
Enabling GenAI Breakthroughs with Knowledge GraphsEnabling GenAI Breakthroughs with Knowledge Graphs
Enabling GenAI Breakthroughs with Knowledge Graphs
 
Neo4j_Anurag Tandon_Product Vision and Roadmap.Benelux.pptx.pdf
Neo4j_Anurag Tandon_Product Vision and Roadmap.Benelux.pptx.pdfNeo4j_Anurag Tandon_Product Vision and Roadmap.Benelux.pptx.pdf
Neo4j_Anurag Tandon_Product Vision and Roadmap.Benelux.pptx.pdf
 
Neo4j Jesus Barrasa The Art of the Possible with Graph
Neo4j Jesus Barrasa The Art of the Possible with GraphNeo4j Jesus Barrasa The Art of the Possible with Graph
Neo4j Jesus Barrasa The Art of the Possible with Graph
 
SWIFT: Maintaining Critical Standards in the Financial Services Industry with...
SWIFT: Maintaining Critical Standards in the Financial Services Industry with...SWIFT: Maintaining Critical Standards in the Financial Services Industry with...
SWIFT: Maintaining Critical Standards in the Financial Services Industry with...
 
Deloitte & Red Cross: Talk to your data with Knowledge-enriched Generative AI
Deloitte & Red Cross: Talk to your data with Knowledge-enriched Generative AIDeloitte & Red Cross: Talk to your data with Knowledge-enriched Generative AI
Deloitte & Red Cross: Talk to your data with Knowledge-enriched Generative AI
 
Ingka Digital: Linked Metadata by Design
Ingka Digital: Linked Metadata by DesignIngka Digital: Linked Metadata by Design
Ingka Digital: Linked Metadata by Design
 
Discover Neo4j Aura_ The Future of Graph Database-as-a-Service Workshop_3.13.24
Discover Neo4j Aura_ The Future of Graph Database-as-a-Service Workshop_3.13.24Discover Neo4j Aura_ The Future of Graph Database-as-a-Service Workshop_3.13.24
Discover Neo4j Aura_ The Future of Graph Database-as-a-Service Workshop_3.13.24
 
GraphSummit Copenhagen 2024 - Neo4j Vision and Roadmap.pptx
GraphSummit Copenhagen 2024 - Neo4j Vision and Roadmap.pptxGraphSummit Copenhagen 2024 - Neo4j Vision and Roadmap.pptx
GraphSummit Copenhagen 2024 - Neo4j Vision and Roadmap.pptx
 
Emil Eifrem at GraphSummit Copenhagen 2024 - The Art of the Possible.pptx
Emil Eifrem at GraphSummit Copenhagen 2024 - The Art of the Possible.pptxEmil Eifrem at GraphSummit Copenhagen 2024 - The Art of the Possible.pptx
Emil Eifrem at GraphSummit Copenhagen 2024 - The Art of the Possible.pptx
 

Recently uploaded

[Webinar] SpiraTest - Setting New Standards in Quality Assurance
[Webinar] SpiraTest - Setting New Standards in Quality Assurance[Webinar] SpiraTest - Setting New Standards in Quality Assurance
[Webinar] SpiraTest - Setting New Standards in Quality AssuranceInflectra
 
Genislab builds better products and faster go-to-market with Lean project man...
Genislab builds better products and faster go-to-market with Lean project man...Genislab builds better products and faster go-to-market with Lean project man...
Genislab builds better products and faster go-to-market with Lean project man...Farhan Tariq
 
Generative Artificial Intelligence: How generative AI works.pdf
Generative Artificial Intelligence: How generative AI works.pdfGenerative Artificial Intelligence: How generative AI works.pdf
Generative Artificial Intelligence: How generative AI works.pdfIngrid Airi González
 
Enhancing User Experience - Exploring the Latest Features of Tallyman Axis Lo...
Enhancing User Experience - Exploring the Latest Features of Tallyman Axis Lo...Enhancing User Experience - Exploring the Latest Features of Tallyman Axis Lo...
Enhancing User Experience - Exploring the Latest Features of Tallyman Axis Lo...Scott Andery
 
Manual 508 Accessibility Compliance Audit
Manual 508 Accessibility Compliance AuditManual 508 Accessibility Compliance Audit
Manual 508 Accessibility Compliance AuditSkynet Technologies
 
Why device, WIFI, and ISP insights are crucial to supporting remote Microsoft...
Why device, WIFI, and ISP insights are crucial to supporting remote Microsoft...Why device, WIFI, and ISP insights are crucial to supporting remote Microsoft...
Why device, WIFI, and ISP insights are crucial to supporting remote Microsoft...panagenda
 
Data governance with Unity Catalog Presentation
Data governance with Unity Catalog PresentationData governance with Unity Catalog Presentation
Data governance with Unity Catalog PresentationKnoldus Inc.
 
Arizona Broadband Policy Past, Present, and Future Presentation 3/25/24
Arizona Broadband Policy Past, Present, and Future Presentation 3/25/24Arizona Broadband Policy Past, Present, and Future Presentation 3/25/24
Arizona Broadband Policy Past, Present, and Future Presentation 3/25/24Mark Goldstein
 
Moving Beyond Passwords: FIDO Paris Seminar.pdf
Moving Beyond Passwords: FIDO Paris Seminar.pdfMoving Beyond Passwords: FIDO Paris Seminar.pdf
Moving Beyond Passwords: FIDO Paris Seminar.pdfLoriGlavin3
 
Time Series Foundation Models - current state and future directions
Time Series Foundation Models - current state and future directionsTime Series Foundation Models - current state and future directions
Time Series Foundation Models - current state and future directionsNathaniel Shimoni
 
TrustArc Webinar - How to Build Consumer Trust Through Data Privacy
TrustArc Webinar - How to Build Consumer Trust Through Data PrivacyTrustArc Webinar - How to Build Consumer Trust Through Data Privacy
TrustArc Webinar - How to Build Consumer Trust Through Data PrivacyTrustArc
 
From Family Reminiscence to Scholarly Archive .
From Family Reminiscence to Scholarly Archive .From Family Reminiscence to Scholarly Archive .
From Family Reminiscence to Scholarly Archive .Alan Dix
 
TeamStation AI System Report LATAM IT Salaries 2024
TeamStation AI System Report LATAM IT Salaries 2024TeamStation AI System Report LATAM IT Salaries 2024
TeamStation AI System Report LATAM IT Salaries 2024Lonnie McRorey
 
(How to Program) Paul Deitel, Harvey Deitel-Java How to Program, Early Object...
(How to Program) Paul Deitel, Harvey Deitel-Java How to Program, Early Object...(How to Program) Paul Deitel, Harvey Deitel-Java How to Program, Early Object...
(How to Program) Paul Deitel, Harvey Deitel-Java How to Program, Early Object...AliaaTarek5
 
Sample pptx for embedding into website for demo
Sample pptx for embedding into website for demoSample pptx for embedding into website for demo
Sample pptx for embedding into website for demoHarshalMandlekar2
 
Digital Identity is Under Attack: FIDO Paris Seminar.pptx
Digital Identity is Under Attack: FIDO Paris Seminar.pptxDigital Identity is Under Attack: FIDO Paris Seminar.pptx
Digital Identity is Under Attack: FIDO Paris Seminar.pptxLoriGlavin3
 
Take control of your SAP testing with UiPath Test Suite
Take control of your SAP testing with UiPath Test SuiteTake control of your SAP testing with UiPath Test Suite
Take control of your SAP testing with UiPath Test SuiteDianaGray10
 
How to Effectively Monitor SD-WAN and SASE Environments with ThousandEyes
How to Effectively Monitor SD-WAN and SASE Environments with ThousandEyesHow to Effectively Monitor SD-WAN and SASE Environments with ThousandEyes
How to Effectively Monitor SD-WAN and SASE Environments with ThousandEyesThousandEyes
 
A Deep Dive on Passkeys: FIDO Paris Seminar.pptx
A Deep Dive on Passkeys: FIDO Paris Seminar.pptxA Deep Dive on Passkeys: FIDO Paris Seminar.pptx
A Deep Dive on Passkeys: FIDO Paris Seminar.pptxLoriGlavin3
 
Generative AI for Technical Writer or Information Developers
Generative AI for Technical Writer or Information DevelopersGenerative AI for Technical Writer or Information Developers
Generative AI for Technical Writer or Information DevelopersRaghuram Pandurangan
 

Recently uploaded (20)

[Webinar] SpiraTest - Setting New Standards in Quality Assurance
[Webinar] SpiraTest - Setting New Standards in Quality Assurance[Webinar] SpiraTest - Setting New Standards in Quality Assurance
[Webinar] SpiraTest - Setting New Standards in Quality Assurance
 
Genislab builds better products and faster go-to-market with Lean project man...
Genislab builds better products and faster go-to-market with Lean project man...Genislab builds better products and faster go-to-market with Lean project man...
Genislab builds better products and faster go-to-market with Lean project man...
 
Generative Artificial Intelligence: How generative AI works.pdf
Generative Artificial Intelligence: How generative AI works.pdfGenerative Artificial Intelligence: How generative AI works.pdf
Generative Artificial Intelligence: How generative AI works.pdf
 
Enhancing User Experience - Exploring the Latest Features of Tallyman Axis Lo...
Enhancing User Experience - Exploring the Latest Features of Tallyman Axis Lo...Enhancing User Experience - Exploring the Latest Features of Tallyman Axis Lo...
Enhancing User Experience - Exploring the Latest Features of Tallyman Axis Lo...
 
Manual 508 Accessibility Compliance Audit
Manual 508 Accessibility Compliance AuditManual 508 Accessibility Compliance Audit
Manual 508 Accessibility Compliance Audit
 
Why device, WIFI, and ISP insights are crucial to supporting remote Microsoft...
Why device, WIFI, and ISP insights are crucial to supporting remote Microsoft...Why device, WIFI, and ISP insights are crucial to supporting remote Microsoft...
Why device, WIFI, and ISP insights are crucial to supporting remote Microsoft...
 
Data governance with Unity Catalog Presentation
Data governance with Unity Catalog PresentationData governance with Unity Catalog Presentation
Data governance with Unity Catalog Presentation
 
Arizona Broadband Policy Past, Present, and Future Presentation 3/25/24
Arizona Broadband Policy Past, Present, and Future Presentation 3/25/24Arizona Broadband Policy Past, Present, and Future Presentation 3/25/24
Arizona Broadband Policy Past, Present, and Future Presentation 3/25/24
 
Moving Beyond Passwords: FIDO Paris Seminar.pdf
Moving Beyond Passwords: FIDO Paris Seminar.pdfMoving Beyond Passwords: FIDO Paris Seminar.pdf
Moving Beyond Passwords: FIDO Paris Seminar.pdf
 
Time Series Foundation Models - current state and future directions
Time Series Foundation Models - current state and future directionsTime Series Foundation Models - current state and future directions
Time Series Foundation Models - current state and future directions
 
TrustArc Webinar - How to Build Consumer Trust Through Data Privacy
TrustArc Webinar - How to Build Consumer Trust Through Data PrivacyTrustArc Webinar - How to Build Consumer Trust Through Data Privacy
TrustArc Webinar - How to Build Consumer Trust Through Data Privacy
 
From Family Reminiscence to Scholarly Archive .
From Family Reminiscence to Scholarly Archive .From Family Reminiscence to Scholarly Archive .
From Family Reminiscence to Scholarly Archive .
 
TeamStation AI System Report LATAM IT Salaries 2024
TeamStation AI System Report LATAM IT Salaries 2024TeamStation AI System Report LATAM IT Salaries 2024
TeamStation AI System Report LATAM IT Salaries 2024
 
(How to Program) Paul Deitel, Harvey Deitel-Java How to Program, Early Object...
(How to Program) Paul Deitel, Harvey Deitel-Java How to Program, Early Object...(How to Program) Paul Deitel, Harvey Deitel-Java How to Program, Early Object...
(How to Program) Paul Deitel, Harvey Deitel-Java How to Program, Early Object...
 
Sample pptx for embedding into website for demo
Sample pptx for embedding into website for demoSample pptx for embedding into website for demo
Sample pptx for embedding into website for demo
 
Digital Identity is Under Attack: FIDO Paris Seminar.pptx
Digital Identity is Under Attack: FIDO Paris Seminar.pptxDigital Identity is Under Attack: FIDO Paris Seminar.pptx
Digital Identity is Under Attack: FIDO Paris Seminar.pptx
 
Take control of your SAP testing with UiPath Test Suite
Take control of your SAP testing with UiPath Test SuiteTake control of your SAP testing with UiPath Test Suite
Take control of your SAP testing with UiPath Test Suite
 
How to Effectively Monitor SD-WAN and SASE Environments with ThousandEyes
How to Effectively Monitor SD-WAN and SASE Environments with ThousandEyesHow to Effectively Monitor SD-WAN and SASE Environments with ThousandEyes
How to Effectively Monitor SD-WAN and SASE Environments with ThousandEyes
 
A Deep Dive on Passkeys: FIDO Paris Seminar.pptx
A Deep Dive on Passkeys: FIDO Paris Seminar.pptxA Deep Dive on Passkeys: FIDO Paris Seminar.pptx
A Deep Dive on Passkeys: FIDO Paris Seminar.pptx
 
Generative AI for Technical Writer or Information Developers
Generative AI for Technical Writer or Information DevelopersGenerative AI for Technical Writer or Information Developers
Generative AI for Technical Writer or Information Developers
 

GraphConnect Europe 2016 - Building Spring Data Neo4j 4.1 Applications Like A Superhero - Luanne Misquitta

  • 1. GraphAware® Build Spring Data Neo4j 4 Applications like a Superhero graphaware.com @graph_aware, @luannem Luanne Misquitta
  • 2. Most active Spring project Convenient data access to (No)SQL databases Consistent API’s Mapping POJOs, Template, Repositories Neo4j, JPA, MongoDB, Redis, CouchBase & more Spring Data GraphAware®
  • 3. Focus on performance Based on a pure Java OGM [Neo4j-OGM] 3 Drivers available to connect to Neo4j HTTP Embedded Bolt Spring Data Neo4j 4.1 GraphAware®
  • 4. Object Graph Mapping from any Java or JVM-based application “Vampire” metadata scanning (no reflection!) “Smart” object mapping Mapping contexts tied to Session lifetimes Application HTTP session/request etc. Support for default and bespoke type conversions Repositories, Neo4jTemplate [SDN] Custom Queries, Derived Finders [SDN] Transactional Support Features GraphAware®
  • 5. Persistence horizon (depth) indicates how many relationships should be traversed in the graph when loading or saving data Default loading depth is 1 Default persistence depth is -1 Variable Depth Persistence GraphAware®
  • 6. It’s a bird, it’s a plane, 
 it’s a superhero graph!
  • 7. Node Entities - Character GraphAware® @NodeEntity(label = "Character") public class Character { @GraphId Long graphId; … private Long id; private String name; private String alias; private String realName;
  • 8. Node Entities - Relationships GraphAware® public class Character { … @Relationship(type = "ALLY_OF", direction = Relationship.UNDIRECTED) @Relationship(type = "ENEMY_OF", direction = Relationship.UNDIRECTED) @Relationship(type = "MEMBER_OF") @Relationship(type = "STARS", direction = Relationship.INCOMING) Set<Character> allies = new HashSet<>(); Set<Character> enemies = new HashSet<>(); Set<Team> teams = new HashSet<>(); Set<Role> roles = new HashSet<>(); Set<Game> gamesFeaturedIn = new HashSet<>(); @Relationship(type = "FEATURED_IN") @Relationship(type = "FEATURED_IN") Set<Comic> comicsFeaturedIn = new HashSet<>();
  • 9. Node Entities - Hierarchy GraphAware® public class Villain extends Character{ … } public class Hero extends Character { …
 } @NodeEntity(label = "Hero") @NodeEntity(label = "Villain")
  • 10. Node Entities - Team GraphAware® @NodeEntity(label = "Team") public class Team { @GraphId private Long graphId; private Long id; private String name; private String operationsBase; @Relationship(type = "MEMBER_OF", direction = "INCOMING") private Set<Character> members = new HashSet<>(); public Team() { }
  • 11. Node Entities - Comic GraphAware® @NodeEntity(label = "Comic") private Long id; private String title; private String author; private String artist; private boolean available; private Binding binding; @DateLong private Date onSaleDate; @Relationship(type = "FEATURED_IN", direction = Relationship.INCOMING) private Set<Character> characters = new HashSet<>(); public enum Binding { SOFT, LEATHER, CLOTH, HARD } public class Comic { @GraphId private Long graphId;
  • 12. Node Entities - Game GraphAware® @NodeEntity(label = "Game") public class Game { @Graphid private Long graphId; private Long id; private String title; private int year; private String publisher; private Rating rating; private Set<Platform> platforms; @Relationship(type = "FEATURED_IN", direction = Relationship.INCOMING) private Set<Character> characters = new HashSet<>(); public enum Platform { PC, WII, XBOX_360, PLAYSTATION_3 }
  • 13. Node Entities GraphAware® @Convert(UrlConverter.class) private URL imdbUrl; @Relationship(type = "STARS") private Set<Role> stars; public class UrlConverter implements AttributeConverter<URL, String> { @Override public String toGraphProperty(URL value) { return value == null? null : value.toString(); } @Override public URL toEntityAttribute(String value) { try { return new URL(value); } catch (MalformedURLException e) { e.printStackTrace(); } return null; }
 } @NodeEntity(label = "Movie") public class Movie { @GraphId private Long graphId; private Long id; private String title; private int year; private Rating rating;
  • 14. Relationship Entities GraphAware® @RelationshipEntity(type = "STARS") public class Role { private Long id; @StartNode private Movie movie; @EndNode private Character character; private String actor;
  • 15. Repositories GraphAware® public interface CharacterRepository<T extends Character> extends GraphRepository<T> { List<T> findByNameLike(String keyword); @Query(" MATCH (c:Character) WHERE ID(c)={characterId} " + "OPTIONAL MATCH (c)-[:ALLY_OF|ENEMY_OF]-(other) " + "WITH c, collect(other) as others " + "OPTIONAL MATCH (c)-[:MEMBER_OF|FEATURED_IN]-> ()<-[:MEMBER_OF|FEATURED_IN]-(teamMember) " + "WITH c, others + collect(teamMember) as othersWithTeam " + "OPTIONAL MATCH (c)<-[:STARS]-()-[:STARS]->(actors) " + "WITH othersWithTeam + collect(actors) as allOthers " + "UNWIND allOthers as related " + "WITH count(*) as count, related " + "RETURN related ORDER BY count DESC") List<Character> findRelatedCharacters(@Param("characterId") Long id);
  • 16. Repositories GraphAware® public interface HeroRepository extends CharacterRepository<Hero> { } public interface VillainRepository extends CharacterRepository<Villain>{ }
  • 17. Services GraphAware® @Service public class CharacterService { @Autowired CharacterRepository<Character> characterRepository; @Autowired HeroRepository heroRepository; @Autowired VillainRepository villainRepository; public List<CharacterSummary> searchHeroesByKeyword(String keyword) { return summarizeCharacter(heroRepository.findByNameLike(getKeywordParam(keyword)) } public List<Character> findRelatedCharacters(Long id) { return characterRepository.findRelatedCharacters(id); } public Character getById(Long id) { return characterRepository.findById(id); } … }
  • 18. Controller GraphAware® @RestController @RequestMapping("/api/") public class CharacterController { @Autowired CharacterService characterService; @RequestMapping(value = "characters/{id}", method = RequestMethod.GET) public Character getCharacterById(@PathVariable("id") Long id) { return characterService.getById(id); } @RequestMapping(value = "characters/{id}/related", method = RequestMethod.GET) public List<Character> getRelatedCharacters(@PathVariable("id") Long id) { return characterService.findRelatedCharacters(id); }
  • 19. SDN 4.1 / Neo4j OGM Driver Configuration GraphAware® driver=org.neo4j.ogm.drivers.http.driver.HttpDriver URI=http://neo4j:neo@localhost:7474 Auto configure with ogm.properties Java Configuration Components.configuration() .driverConfiguration() .setDriverClassName("org.neo4j.ogm.drivers.http.driver.HttpDriver") .setURI("http://user:password@localhost:7474")
  • 20. SDN 4.1 Neo4j Configuration GraphAware® @Configuration @ComponentScan("com.graphaware.superhero") @EnableAutoConfiguration @EnableTransactionManagement @EnableNeo4jRepositories("com.graphaware.superhero.repository") public class Application extends Neo4jConfiguration { public static void main(String[] args) { SpringApplication.run(Application.class, args); } …
  • 21. SDN 4.1 Neo4j Configuration GraphAware® … public class Application extends Neo4jConfiguration { @Override @Bean public SessionFactory getSessionFactory() { return new SessionFactory("com.graphaware.superhero.domain"); } @Override @Bean @Scope(value = "session", proxyMode = ScopedProxyMode.TARGET_CLASS) public Session getSession() throws Exception { return super.getSession(); }
  • 22. Up, up and away! GraphAware® mvn clean spring-boot:run
  • 24. Where to find us GraphAware® Luanne Misquitta Adam George Michal “Batman” Bachman Vince Bickers
  • 25. Getting Help StackOverflow (spring-data-neo4j-4, neo4j-ogm) Slack: neo4j-users (neo4j-sdn) Email the team: spring-data-neo4j@neotechnology.com Raise issues: https://jira.spring.io/browse/DATAGRAPH Twitter: Follow @graph_aware for pro tips Blog: http://graphaware.com/blog