SlideShare a Scribd company logo
1 of 65
Download to read offline
Object	
  Graph	
  Mapping	
  
Spring	
  Data	
  Neo4j	
  3.0	
  
Nicki	
  Wa(	
  @	
  opencredo	
  	
  
Michael	
  Hunger	
  @	
  neotechnology	
  
Agenda	
  
1.	
  Why	
  Object-­‐Graph-­‐Mapping?	
  	
  
2.	
  What	
  is	
  Spring	
  Data	
  (Neo4j)?	
  	
  
3.	
  Current	
  State	
  of	
  affairs	
  
4.	
  SDN	
  3.0	
  	
  
5.	
  The	
  Future	
  
6.	
  Some	
  Spring	
  Data	
  Neoj	
  Use-­‐Cases	
  
1.	
  Why	
  	
  
Object-­‐Graph-­‐Mapping?	
  
Why	
  OGM	
  ?	
  
-­‐	
  Convenience	
  	
  
-­‐	
  Simplify	
  interac2on	
  with	
  underlying	
  data	
  
source:	
  Framework/Library	
  handles	
  basic	
  CRUD	
  type	
  
funcVonality	
  for	
  you	
  

-­‐	
  Provides	
  ability	
  to	
  work	
  with	
  na2ve	
  domain	
  
language	
  constructs:	
  eg	
  domain	
  classes/objects	
  
(POJOs	
  in	
  Java)	
  in	
  your	
  applicaVon	
  	
  

-­‐	
  Use	
  Cases:	
  examples	
  at	
  end	
  of	
  talk	
  
Why	
  OGM	
  ?	
  
But	
  …	
  
-­‐  IndirecVon,	
  addiVonal	
  abstracVon	
  layer	
  adds	
  
performance,	
  overhead	
  
-­‐  Encourages	
  users	
  to	
  pull	
  larger	
  parts	
  of	
  the	
  
database	
  into	
  memory	
  to	
  process	
  instead	
  of	
  
le_ng	
  the	
  db	
  do	
  its	
  job	
  
2.	
  What	
  is	
  	
  
Spring	
  Data	
  Neo4j?	
  
Spring	
  Data	
  Neo4j	
  
-­‐	
  OGM	
  aimed	
  at	
  Java	
  world	
  &	
  uses	
  Spring	
  
-­‐	
  Neo4j	
  Implementa2on	
  of	
  the	
  Spring	
  Data	
  
project:	
  SpringSource/VMWare/Pivotal	
  iniVaVve	
  to	
  give	
  

Spring	
  developers	
  easy	
  access	
  to	
  the	
  emerging	
  world	
  of	
  
NOSQL.	
  Was	
  the	
  iniVal	
  and	
  first	
  Spring	
  Data	
  project	
  by	
  Rod	
  
and	
  Emil	
  

-­‐	
  Simple	
  programming	
  model:	
  annotaVon-­‐based	
  
programming	
  for	
  applicaVons	
  with	
  rich	
  domains	
  
With	
  and	
  without	
  SDN	
  ...	
  
With	
  and	
  without	
  SDN	
  ...	
  
Spring	
  Data	
  Neo4j	
  -­‐	
  features	
  
-­‐	
  Two	
  mapping	
  modes:	
  Simple	
  &	
  Advanced	
  
-­‐	
  Provides	
  Spring	
  Data	
  Repository	
  Support	
  
-­‐	
  Ability	
  to	
  drop	
  down	
  to	
  Neo4j	
  Core	
  API	
  if	
  
required	
  
-­‐	
  (Neo4j	
  Server	
  Support)	
  
Example	
  Domain:	
  	
  
“Conference	
  Management”	
  
Sample	
  graph	
  
High	
  Level	
  Object	
  Model	
  
DePining	
  Your	
  Entities	
  
SDN	
  Domain	
  Entities	
  
@NodeEntity	
  
@TypeAlias(value	
  =	
  "Conference")	
  
public	
  class	
  Conference	
  	
  {	
  
	
  	
  	
  @GraphId	
  Long	
  graphId;	
  
	
  	
  	
  @Indexed	
  String	
  name;	
  
	
  	
  	
  Date	
  date;	
  
	
  
	
  	
  	
  @RelatedTo(type="ATTENDEE")	
  
	
  	
  	
  Set<Person>	
  attendees;	
  
	
  	
  	
  @RelatedTo(type="TALK")	
  
	
  	
  	
  Set<Talk>	
  talks;	
  
//	
  .	
  .	
  .	
  
}	
  
SDN	
  Domain	
  Entities	
  
@NodeEntity	
  
@TypeAlias(value	
  =	
  "Person")	
  
public	
  class	
  Person	
  {	
  
	
  	
  	
  @GraphId	
  Long	
  graphId;	
  
	
  	
  	
  @Indexed(unique	
  =	
  true)	
  String	
  name;	
  
	
  	
  	
  @RelatedToVia	
  
	
  	
  	
  Iterable<Attended>	
  talksAttended;	
  
	
  	
  	
  //	
  	
  .	
  .	
  .	
  
}	
  
SDN	
  Domain	
  Entities	
  (Relationship)	
  
@RelationshipEntity(type	
  =	
  "LISTENED_TO")	
  
public	
  class	
  Attended	
  {	
  
	
  	
  	
  @GraphId	
  Long	
  graphId;	
  
	
  
	
  	
  	
  @StartNode	
  Person	
  attendee;	
  
	
  	
  	
  @EndNode	
  Talk	
  talk;	
  
	
  
	
  	
  	
  Integer	
  rating;	
  	
  
	
  	
  	
  //	
  .	
  .	
  .	
  
}	
  
SDN	
  Domain	
  Entities	
  
@NodeEntity	
  
@TypeAlias(value	
  =	
  "Talk")	
  
public	
  class	
  Talk	
  {	
  
	
  	
  	
  @GraphId	
  Long	
  graphId;	
  
	
  	
  	
  @Indexed	
  String	
  name;	
  
	
  	
  	
  String	
  description;	
  
	
  
	
  	
  	
  @RelatedTo(type="SPEAKER")	
  
	
  	
  	
  Set<Speaker>	
  speakers;	
  
	
  	
  	
  @RelatedToVia(direction	
  =	
  INCOMING)	
  
	
  	
  	
  Set<Attended>	
  attendees;	
  
	
  	
  	
  //	
  .	
  .	
  .	
  
}	
  
SDN	
  Domain	
  Entities	
  

@TypeAlias(value	
  =	
  "Speaker")	
  
public	
  class	
  Speaker	
  extends	
  Person	
  {	
  
	
  	
  	
  String	
  bio;	
  
	
  	
  	
  @RelatedTo(type="SPEAKER",	
  direction	
  =	
  INCOMING)	
  
	
  	
  	
  Iterable<Talk>	
  talks;	
  
	
  	
  	
  //	
  .	
  .	
  .	
  
}	
  
SDN	
  Repository	
  Support	
  -­‐	
  
Derived	
  Finder	
  Methods	
  
SDN	
  Repository	
  Support	
  
import	
  org....data.neo4j.repository.GraphRepository;	
  
import	
  java.util.Set;	
  
public	
  interface	
  TalkRepository	
  extends	
  	
  
	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  GraphRepository<Talk>	
  {	
  
	
  
	
  	
  	
  Set<Talk>	
  findTalksBySpeakersName(String	
  name);	
  
}	
  
SDN	
  Repository	
  Support	
  
findTalksBySpeakersName	
  
@NodeEntity	
  
@TypeAlias(value	
  =	
  "Talk")	
  
public	
  class	
  Talk	
  {	
  
	
  	
  	
  @GraphId	
  Long	
  graphId;	
  
	
  	
  	
  @Indexed	
  String	
  name;	
  
	
  	
  	
  String	
  description;	
  
	
  
	
  	
  	
  @RelatedTo(type="SPEAKER")	
  
	
  	
  	
  Set<Speaker>	
  speakers;	
  
	
  	
  	
  @RelatedToVia(direction	
  =	
  INCOMING)	
  
	
  	
  	
  Set<Attended>	
  attendees;	
  
	
  	
  	
  //	
  .	
  .	
  .	
  
}	
  
SDN	
  Repository	
  Support	
  
findTalksBySpeakersName	
  
@TypeAlias(value	
  =	
  "Speaker")	
  
public	
  class	
  Speaker	
  extends	
  Person	
  {	
  
	
  
	
  	
  	
  String	
  bio;	
  
	
  	
  	
  @RelatedTo(type="SPEAKER",	
  direction	
  =	
  INCOMING)	
  
	
  	
  	
  Iterable<Talk>	
  talks;	
  
@NodeEntity	
  
	
  	
  	
  //	
  .	
  .	
  .	
  
@TypeAlias(value	
  =	
  "Person")	
  
}	
  
public	
  class	
  Person	
  {	
  
	
  	
  	
  @GraphId	
  Long	
  graphId;	
  
	
  	
  	
  @Indexed(unique	
  =	
  true)	
  String	
  name;	
  
	
  	
  	
  @RelatedToVia(type="ATTENDED")	
  
	
  	
  	
  Iterable<Attended>	
  talksAttended;	
  
	
  	
  	
  //	
  	
  .	
  .	
  .	
  
}	
  
SDN	
  Repository	
  Support	
  
import	
  org....data.neo4j.repository.GraphRepository;	
  
import	
  java.util.Set;	
  
public	
  interface	
  TalkRepository	
  extends	
  	
  
	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  GraphRepository<Talk>	
  {	
  
	
  
	
  	
  	
  Set<Talk>	
  findTalksBySpeakersName(String	
  name);	
  
}	
  

	
  START	
  `talk_speakers`=node:`Person`(`name`={0})	
  
	
  MATCH	
  (`talk`)-­‐[:`SPEAKER`]-­‐>(`talk_speakers`)	
  
	
  RETURN	
  `talk`	
  
SDN	
  Repository	
  Support	
  -­‐	
  
Dynamic	
  Queries	
  
SDN	
  Repository	
  Support	
  
import	
  org....data.neo4j.repository.GraphRepository;	
  
import	
  java.util.Set;	
  
public	
  interface	
  TalkRepository	
  extends	
  	
  
	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  GraphRepository<Talk>	
  {	
  
	
  	
  	
  //	
  Repository	
  Query	
  Method	
  
	
  	
  	
  @Query(value	
  =	
  
	
  	
  	
  	
  "MATCH	
  (talk:Talk)-­‐[:SPEAKER]-­‐>(speaker:Speaker)	
  "	
  +	
  
	
  	
  	
  	
  "WHERE	
  speaker.name={0}	
  RETURN	
  talk")	
  
	
  	
  	
  Set<Talk>	
  findTalksBySpeakersNameQuery(String	
  name);	
  
	
  	
  
	
  	
  	
  //	
  .	
  .	
  .	
  
}	
  
3.	
  Current	
  	
  
State	
  Of	
  Affairs	
  
Current	
  State	
  Of	
  Affairs	
  
-­‐	
  Current	
  ProducVon	
  Version:	
  2.3.2.RELEASE	
  
-­‐	
  Neo4j	
  1.9.3	
  support	
  
4.	
  SDN	
  3.0	
  
Disclaimer	
  !!	
  
Disclaimer	
  
SDN	
  3.0	
  s)ll	
  in	
  progress	
  ...	
  
•  Subject	
  to	
  change	
  
•  Primary	
  changes	
  are	
  Neo4j	
  2.0	
  compliance	
  -­‐	
  
not	
  finalised	
  yet	
  
•  follow	
  progress	
  on	
  githubh"p://
spring.neo4j.org/source	
  
SDN	
  3.0	
  
-­‐	
  Base	
  Neo4j	
  2.0	
  support	
  
-­‐	
  Spring	
  3.2.5	
  (eventually	
  4	
  as	
  well)	
  support	
  
-­‐	
  New	
  Type	
  Representa2on	
  Strategy	
  -­‐	
  Labels	
  	
  
-­‐	
  Migra2on	
  towards	
  more	
  Cypher	
  driven	
  
founda2on	
  
-­‐	
  Various	
  bug	
  fixes	
  and	
  enhancements	
  
Neo4j	
  2.0	
  Support	
  	
  
-­‐	
  Will	
  be	
  able	
  to	
  run	
  against	
  a	
  Neo4j	
  2.X	
  DB	
  
-­‐	
  Query	
  using	
  Labels	
  
-­‐	
  Ability	
  to	
  use	
  new	
  Cypher	
  Syntax	
  
-­‐	
  Schema	
  Indexes	
  (Work	
  in	
  Progress)	
  
Label	
  Type	
  Representation	
  Strategy	
  
@NodeEntity	
  
@TypeAlias(value	
  =	
  "Person")	
  
public	
  class	
  Person	
  {	
  
	
  @Query("MATCH	
  (person)<-­‐[:ATTENDEE]-­‐(gathering:Conference)"	
  +	
  
	
  	
  	
  	
  	
  	
  	
  	
  "	
  WHERE	
  	
  id(person)	
  =	
  {self}	
  "	
  +	
  
	
  	
  	
  	
  	
  	
  	
  	
  "	
  RETURN	
  gathering")	
  
	
  public	
  Iterable<Conference>	
  findAllConferencesAttended;	
  
	
  //	
  	
  .	
  .	
  .	
  
}	
  
	
  	
  
@NodeEntity	
  
@TypeAlias(value	
  =	
  "Conference")	
  
public	
  class	
  Conference	
  	
  {	
  
	
  //	
  .	
  .	
  .	
  
}	
  
@NodeEntity	
  
@TypeAlias(value	
  =	
  "Person")	
  
public	
  class	
  Person	
  {	
  
	
  	
  	
  @GraphId	
  Long	
  graphId;	
  
	
  	
  	
  @Indexed(unique	
  =	
  true)	
  String	
  name;	
  
	
  	
  	
  @RelatedToVia(type="ATTENDED")	
  
	
  	
  	
  Iterable<Attended>	
  talksAttended;	
  
	
  	
  	
  //	
  	
  .	
  .	
  .	
  
}	
  

@TypeAlias(value	
  =	
  "Speaker")	
  
public	
  class	
  Speaker	
  extends	
  Person	
  {	
  
	
  
	
  	
  	
  String	
  bio;	
  
	
  	
  	
  @RelatedTo(type="SPEAKER",	
  direction	
  =	
  INCOMING)	
  
	
  	
  	
  Iterable<Talk>	
  talks;	
  
	
  	
  	
  //	
  .	
  .	
  .	
  
}	
  
Index	
  vs	
  Label	
  TRS	
  
public	
  interface	
  ConferenceRepository	
  extends	
  	
  
	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  GraphRepository<Conference>	
  {	
  
	
  /*	
  
	
  	
  	
  	
  	
  
	
  Query	
  generated	
  when	
  using	
  Index	
  Based	
  TRS	
  
	
  	
  	
  	
  	
  	
  	
  	
  	
  
	
  	
  	
  START	
  `conference`=node:__types__(className="Conference")	
  
	
  	
  	
  	
  	
  	
  	
  	
  	
  
	
  	
  	
  WHERE	
  `conference`.`date`	
  =	
  {0}	
  
	
  	
  	
  	
  	
  	
  	
  	
  	
  
	
  	
  	
  RETURN	
  `conference`	
  
	
  
	
  	
  	
  	
  	
  
	
  Query	
  generated	
  when	
  using	
  Label	
  Based	
  TRS	
  
	
  	
  	
  	
  	
  	
  	
  	
  	
  
	
  	
  	
  MATCH	
  (`conference`:`Conference`)	
  
	
  	
  	
  	
  	
  	
  	
  	
  	
  
	
  	
  	
  WHERE	
  `conference`.`date`	
  =	
  {0}	
  
	
  	
  	
  	
  	
  	
  	
  	
  	
  
	
  	
  	
  RETURN	
  `conference`	
  
	
  
	
  */	
  

	
  	
  	
  Set<Conference>	
  findAllByDate(Date	
  date);	
  
}	
  
	
  
Label	
  Type	
  Representation	
  Strategy	
  
-­‐	
  Will	
  allow	
  for	
  schema	
  indexes**	
  to	
  be	
  used	
  
-­‐	
  Will	
  add	
  addiVonal	
  __TYPE__XX	
  labels	
  to	
  nodes	
  
-­‐	
  No	
  addiVonal	
  properVes	
  need	
  to	
  be	
  stored	
  on	
  
nodes	
  to	
  represent	
  hierarchy	
  (If	
  Index	
  Based	
  TRS	
  used)	
  
-­‐	
  No	
  addiVonal	
  nodes	
  need	
  to	
  be	
  created	
  to	
  
represent	
  hierarchy	
  (If	
  Sub	
  Reference	
  based	
  TRS	
  used)	
  
5.	
  The	
  Future	
  
Future	
  Plans	
  -­‐	
  Cypher	
  based	
  
• 
• 
• 
• 
• 

Use	
  all	
  Cypher	
  for	
  the	
  mapping	
  layer	
  
Align	
  embedded	
  and	
  remote	
  use	
  
Benefit	
  from	
  Cypher	
  enhancements	
  
Leverage	
  complex	
  query	
  mechanisms	
  
Support	
  more	
  OGM	
  type	
  funcVonality	
  
•  Client	
  side	
  caching	
  
•  Lazy	
  loading	
  
Future	
  Plans	
  -­‐	
  OGM	
  
•  PotenVally	
  extract	
  or	
  use	
  standalone,	
  

cypher-­‐based	
  Java-­‐Neo4j-­‐OGM	
  
•  Also	
  useable	
  without	
  Spring	
  (Data)	
  
Future	
  Plans	
  -­‐	
  Query	
  Results	
  
•  Project	
  query	
  results	
  into	
  object	
  trees/graphs	
  
•  Useful	
  for	
  direct	
  view-­‐layer	
  integraVon	
  
•  Less	
  overhead	
  by	
  an	
  intermediate	
  domain	
  
model	
  that	
  has	
  to	
  be	
  converted	
  
Future	
  Plans	
  -­‐	
  Support	
  
•  Be(er	
  support	
  for	
  
• 
• 
• 
• 

Spring	
  Boot	
  
Spring	
  Data	
  Rest	
  
Remote	
  transacVonal	
  integraVon	
  
JDBC-­‐Driver	
  in	
  Spring	
  
Future	
  Plans	
  -­‐	
  Migration	
  
•  Migrate	
  Type	
  RepresentaVon	
  
•  Index-­‐based	
  -­‐>	
  Label	
  based	
  
•  Refactor/Rename	
  EnVVes,	
  Fields,	
  References	
  
•  Rename	
  Indexes	
  
•  @TypeAlias	
  
6.	
  Some	
  Use	
  Cases	
  
WhyOwnIt:	
  Ownership	
  Sharing	
  Service	
  
WhyOwnIt:	
  Ownership	
  Sharing	
  Service	
  
•  Sharing	
  Culture	
  	
  
•  You	
  own	
  things	
  you	
  only	
  seldomly	
  need	
  
•  You	
  need	
  things	
  you	
  don‘t	
  own	
  
•  Match	
  needs	
  and	
  available	
  devices/tools	
  
•  add	
  raVngs,	
  trust,	
  recommendaVons	
  
•  locaVon	
  based,	
  close	
  to	
  you	
  for	
  pick-­‐up	
  
•  Startup	
  
WhyOwnIt:	
  Ownership	
  Sharing	
  Service	
  
WhyOwnIt:	
  Ownership	
  Sharing	
  Service	
  
WhyOwnIt:	
  Ownership	
  Sharing	
  Service	
  
Music	
  Sharing/Discovery/Recommendation	
  
Service	
  
Music	
  Sharing/Discovery/Recommendation	
  
Service	
  
•  Recommend	
  new	
  arVsts	
  and	
  songs	
  to	
  your	
  
users	
  
•  take	
  their	
  previous	
  listen-­‐history	
  into	
  
account	
  
•  look	
  at	
  what‘s	
  hot	
  amongst	
  their	
  friends	
  
•  infer	
  broader	
  selecVon	
  via	
  bands	
  and	
  genres	
  
•  	
  Detect	
  duplicates	
  using	
  media-­‐fingerprints	
  
•  copyright	
  infringements	
  
Music	
  Sharing/Discovery/Recommendation	
  
Service	
  
Music	
  Sharing/Discovery/Recommendation	
  
Service	
  
Other	
  Use-­‐Cases	
  
Other	
  Use-­‐Cases	
  
•  Financial	
  Services	
  -­‐	
  Asset	
  /	
  Account	
  Management	
  
•  Bank	
  -­‐	
  Permission	
  Management	
  and	
  AuthorizaVon	
  
•  EnVtlement	
  

•  Data	
  Sopware	
  Provider	
  -­‐	
  Impact	
  analysis	
  of	
  
changes	
  
•  ImplicaVon	
  of	
  changes	
  on	
  the	
  company	
  core	
  asset:	
  
DATA	
  
•  Change	
  tracking	
  
•  Root	
  Cause	
  Analysis	
  
SAN/NAS	
  Provider	
  -­‐	
  Lifetime	
  device	
  
tracking	
  
•  Networked	
  Storage	
  Boxes	
  
•  many	
  components,	
  disks,	
  controllers,	
  power	
  supply,	
  
sensors	
  
•  Tracking	
  of	
  measurement	
  data	
  
•  Impact	
  analyVcs	
  
•  Early	
  detecVon	
  of	
  anomalies	
  
•  Intelligent	
  fail	
  over	
  
•  Huge	
  number	
  of	
  domain	
  enVVes	
  (~450)	
  
•  generaVng	
  domain	
  classes	
  and	
  repositories	
  
Game	
  Retailer	
  
•  Buy	
  and	
  Download	
  &	
  Game	
  on	
  Demand	
  
•  Fraud	
  detecVon	
  
•  delayed	
  payments,	
  charge	
  backs,	
  fradulent	
  keys	
  are	
  
invalid	
  

•  Convert	
  rules	
  to	
  traversals	
  
•  co-­‐occurrance	
  of	
  sudden	
  large	
  sales	
  
•  fradulent	
  e-­‐mail	
  pa(erns	
  

•  CombinaVon	
  with	
  Oracle	
  Infrastructure	
  
•  Cross-­‐Store	
  
Does	
  it	
  love	
  me	
  or	
  does	
  it	
  
not?	
  
To	
  SDN	
  or	
  Not	
  to	
  SDN	
  ...	
  
Domain-­‐Centric	
  
•  Integrate	
  in	
  a	
  Springframework	
  Context	
  
•  ExisVng	
  ApplicaVons	
  with	
  POJO	
  Domains	
  
•  Move	
  a	
  manageable	
  amount	
  of	
  data	
  in	
  and	
  
out	
  of	
  the	
  database	
  into	
  Domain	
  Objects	
  
•  Rich,	
  connected	
  domain	
  
•  MulVple	
  projecVons	
  
To	
  SDN	
  or	
  Not	
  to	
  SDN	
  ...	
  
Data-­‐Centric	
  
•  high	
  volume	
  database	
  interacVons	
  
•  reads	
  and	
  writes	
  (inserts)	
  
•  thin	
  domain	
  view	
  on	
  top	
  of	
  graph	
  queries	
  
•  remote	
  Client	
  to	
  Neo4j	
  Server	
  
Want	
  More	
  Info	
  ?	
  
Resources	
  
• 
• 
• 
• 
• 

Spring	
  Data	
  Book	
  	
  
Spring	
  Data	
  Neo4j	
  Guidebook	
  
Spring	
  Data	
  Neo4j	
  on	
  Spring.io	
  
Chapter	
  in	
  Neo4j	
  in	
  AcVon	
  
Cineasts.net	
  Tutorial	
  
Thanks	
  ☺	
  
Questions	
  ?	
  
@techiewa(	
  	
  
@mesirii	
  

More Related Content

What's hot

Java Persistence Frameworks for MongoDB
Java Persistence Frameworks for MongoDBJava Persistence Frameworks for MongoDB
Java Persistence Frameworks for MongoDBTobias Trelle
 
Morphia, Spring Data & Co.
Morphia, Spring Data & Co.Morphia, Spring Data & Co.
Morphia, Spring Data & Co.Tobias Trelle
 
NoSQL Endgame Percona Live Online 2020
NoSQL Endgame Percona Live Online 2020NoSQL Endgame Percona Live Online 2020
NoSQL Endgame Percona Live Online 2020Thodoris Bais
 
MongoDB + Java + Spring Data
MongoDB + Java + Spring DataMongoDB + Java + Spring Data
MongoDB + Java + Spring DataAnton Sulzhenko
 
Devoxx08 - Nuxeo Core, JCR 2, CMIS
Devoxx08 - Nuxeo Core, JCR 2, CMIS Devoxx08 - Nuxeo Core, JCR 2, CMIS
Devoxx08 - Nuxeo Core, JCR 2, CMIS Nuxeo
 
NoSQL Endgame - Java2Days 2020 Virtual
NoSQL Endgame - Java2Days 2020 VirtualNoSQL Endgame - Java2Days 2020 Virtual
NoSQL Endgame - Java2Days 2020 VirtualWerner Keil
 
Ts archiving
Ts   archivingTs   archiving
Ts archivingConfiz
 
Examiness hints and tips from the trenches
Examiness hints and tips from the trenchesExaminess hints and tips from the trenches
Examiness hints and tips from the trenchesIsmail Mayat
 
Spring Data, Jongo & Co.
Spring Data, Jongo & Co.Spring Data, Jongo & Co.
Spring Data, Jongo & Co.Tobias Trelle
 
LDP4j: A framework for the development of interoperable read-write Linked Da...
LDP4j: A framework for the development of interoperable read-write Linked Da...LDP4j: A framework for the development of interoperable read-write Linked Da...
LDP4j: A framework for the development of interoperable read-write Linked Da...Nandana Mihindukulasooriya
 
ElasticSearch for .NET Developers
ElasticSearch for .NET DevelopersElasticSearch for .NET Developers
ElasticSearch for .NET DevelopersBen van Mol
 
Doctrine ORM with eZ Platform REST API and GraphQL
Doctrine ORM with eZ Platform REST API and GraphQLDoctrine ORM with eZ Platform REST API and GraphQL
Doctrine ORM with eZ Platform REST API and GraphQLJani Tarvainen
 
NoSQL Endgame LWJUG 2021
NoSQL Endgame LWJUG 2021NoSQL Endgame LWJUG 2021
NoSQL Endgame LWJUG 2021Thodoris Bais
 
LDAP - Lightweight Directory Access Protocol
LDAP - Lightweight Directory Access ProtocolLDAP - Lightweight Directory Access Protocol
LDAP - Lightweight Directory Access ProtocolS. Hasnain Raza
 
Neo4j Introduction (for Techies)
Neo4j Introduction (for Techies)Neo4j Introduction (for Techies)
Neo4j Introduction (for Techies)Patrick Baumgartner
 
Lightbend Lagom: Microservices Just Right (Scala Days 2016 Berlin)
Lightbend Lagom: Microservices Just Right (Scala Days 2016 Berlin)Lightbend Lagom: Microservices Just Right (Scala Days 2016 Berlin)
Lightbend Lagom: Microservices Just Right (Scala Days 2016 Berlin)mircodotta
 
DevNation'15 - Using Lambda Expressions to Query a Datastore
DevNation'15 - Using Lambda Expressions to Query a DatastoreDevNation'15 - Using Lambda Expressions to Query a Datastore
DevNation'15 - Using Lambda Expressions to Query a DatastoreXavier Coulon
 

What's hot (20)

Java Persistence Frameworks for MongoDB
Java Persistence Frameworks for MongoDBJava Persistence Frameworks for MongoDB
Java Persistence Frameworks for MongoDB
 
Morphia, Spring Data & Co.
Morphia, Spring Data & Co.Morphia, Spring Data & Co.
Morphia, Spring Data & Co.
 
Spring Data in 10 minutes
Spring Data in 10 minutesSpring Data in 10 minutes
Spring Data in 10 minutes
 
NoSQL Endgame Percona Live Online 2020
NoSQL Endgame Percona Live Online 2020NoSQL Endgame Percona Live Online 2020
NoSQL Endgame Percona Live Online 2020
 
.Net 3.5
.Net 3.5.Net 3.5
.Net 3.5
 
MongoDB + Java + Spring Data
MongoDB + Java + Spring DataMongoDB + Java + Spring Data
MongoDB + Java + Spring Data
 
Devoxx08 - Nuxeo Core, JCR 2, CMIS
Devoxx08 - Nuxeo Core, JCR 2, CMIS Devoxx08 - Nuxeo Core, JCR 2, CMIS
Devoxx08 - Nuxeo Core, JCR 2, CMIS
 
Ldap
LdapLdap
Ldap
 
NoSQL Endgame - Java2Days 2020 Virtual
NoSQL Endgame - Java2Days 2020 VirtualNoSQL Endgame - Java2Days 2020 Virtual
NoSQL Endgame - Java2Days 2020 Virtual
 
Ts archiving
Ts   archivingTs   archiving
Ts archiving
 
Examiness hints and tips from the trenches
Examiness hints and tips from the trenchesExaminess hints and tips from the trenches
Examiness hints and tips from the trenches
 
Spring Data, Jongo & Co.
Spring Data, Jongo & Co.Spring Data, Jongo & Co.
Spring Data, Jongo & Co.
 
LDP4j: A framework for the development of interoperable read-write Linked Da...
LDP4j: A framework for the development of interoperable read-write Linked Da...LDP4j: A framework for the development of interoperable read-write Linked Da...
LDP4j: A framework for the development of interoperable read-write Linked Da...
 
ElasticSearch for .NET Developers
ElasticSearch for .NET DevelopersElasticSearch for .NET Developers
ElasticSearch for .NET Developers
 
Doctrine ORM with eZ Platform REST API and GraphQL
Doctrine ORM with eZ Platform REST API and GraphQLDoctrine ORM with eZ Platform REST API and GraphQL
Doctrine ORM with eZ Platform REST API and GraphQL
 
NoSQL Endgame LWJUG 2021
NoSQL Endgame LWJUG 2021NoSQL Endgame LWJUG 2021
NoSQL Endgame LWJUG 2021
 
LDAP - Lightweight Directory Access Protocol
LDAP - Lightweight Directory Access ProtocolLDAP - Lightweight Directory Access Protocol
LDAP - Lightweight Directory Access Protocol
 
Neo4j Introduction (for Techies)
Neo4j Introduction (for Techies)Neo4j Introduction (for Techies)
Neo4j Introduction (for Techies)
 
Lightbend Lagom: Microservices Just Right (Scala Days 2016 Berlin)
Lightbend Lagom: Microservices Just Right (Scala Days 2016 Berlin)Lightbend Lagom: Microservices Just Right (Scala Days 2016 Berlin)
Lightbend Lagom: Microservices Just Right (Scala Days 2016 Berlin)
 
DevNation'15 - Using Lambda Expressions to Query a Datastore
DevNation'15 - Using Lambda Expressions to Query a DatastoreDevNation'15 - Using Lambda Expressions to Query a Datastore
DevNation'15 - Using Lambda Expressions to Query a Datastore
 

Similar to Object Graph Mapping with Spring Data Neo4j 3 - Nicki Watt & Michael Hunger @ GraphConnect London 2013

Webinar about Spring Data Neo4j 4
Webinar about Spring Data Neo4j 4Webinar about Spring Data Neo4j 4
Webinar about Spring Data Neo4j 4GraphAware
 
Dev sum - Beyond REST with GraphQL in .Net
Dev sum - Beyond REST with GraphQL in .NetDev sum - Beyond REST with GraphQL in .Net
Dev sum - Beyond REST with GraphQL in .NetIrina Scurtu
 
Battle Of The Microservice Frameworks: Micronaut versus Quarkus edition!
Battle Of The Microservice Frameworks: Micronaut versus Quarkus edition! Battle Of The Microservice Frameworks: Micronaut versus Quarkus edition!
Battle Of The Microservice Frameworks: Micronaut versus Quarkus edition! Michel Schudel
 
Building a friendly .NET SDK to connect to Space
Building a friendly .NET SDK to connect to SpaceBuilding a friendly .NET SDK to connect to Space
Building a friendly .NET SDK to connect to SpaceMaarten Balliauw
 
OrientDB introduction - NoSQL
OrientDB introduction - NoSQLOrientDB introduction - NoSQL
OrientDB introduction - NoSQLLuca Garulli
 
Using Play Framework 2 in production
Using Play Framework 2 in productionUsing Play Framework 2 in production
Using Play Framework 2 in productionChristian Papauschek
 
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
 
Cross-Platform Native Mobile Development with Eclipse
Cross-Platform Native Mobile Development with EclipseCross-Platform Native Mobile Development with Eclipse
Cross-Platform Native Mobile Development with EclipsePeter Friese
 
Terrastore - A document database for developers
Terrastore - A document database for developersTerrastore - A document database for developers
Terrastore - A document database for developersSergio Bossa
 
S313265 - Advanced Java API for RESTful Web Services at JavaOne Brazil 2010
S313265 - Advanced Java API for RESTful Web Services at JavaOne Brazil 2010S313265 - Advanced Java API for RESTful Web Services at JavaOne Brazil 2010
S313265 - Advanced Java API for RESTful Web Services at JavaOne Brazil 2010Arun Gupta
 
Annotation processing and code gen
Annotation processing and code genAnnotation processing and code gen
Annotation processing and code genkoji lin
 
Ejb3 Struts Tutorial En
Ejb3 Struts Tutorial EnEjb3 Struts Tutorial En
Ejb3 Struts Tutorial EnAnkur Dongre
 
Ejb3 Struts Tutorial En
Ejb3 Struts Tutorial EnEjb3 Struts Tutorial En
Ejb3 Struts Tutorial EnAnkur Dongre
 
Hands On Spring Data
Hands On Spring DataHands On Spring Data
Hands On Spring DataEric Bottard
 
iPhone Development Intro
iPhone Development IntroiPhone Development Intro
iPhone Development IntroLuis Azevedo
 
Scalding Big (Ad)ta
Scalding Big (Ad)taScalding Big (Ad)ta
Scalding Big (Ad)tab0ris_1
 

Similar to Object Graph Mapping with Spring Data Neo4j 3 - Nicki Watt & Michael Hunger @ GraphConnect London 2013 (20)

Webinar about Spring Data Neo4j 4
Webinar about Spring Data Neo4j 4Webinar about Spring Data Neo4j 4
Webinar about Spring Data Neo4j 4
 
Power tools in Java
Power tools in JavaPower tools in Java
Power tools in Java
 
Dev sum - Beyond REST with GraphQL in .Net
Dev sum - Beyond REST with GraphQL in .NetDev sum - Beyond REST with GraphQL in .Net
Dev sum - Beyond REST with GraphQL in .Net
 
Battle Of The Microservice Frameworks: Micronaut versus Quarkus edition!
Battle Of The Microservice Frameworks: Micronaut versus Quarkus edition! Battle Of The Microservice Frameworks: Micronaut versus Quarkus edition!
Battle Of The Microservice Frameworks: Micronaut versus Quarkus edition!
 
Introduction to RavenDB
Introduction to RavenDBIntroduction to RavenDB
Introduction to RavenDB
 
Building a friendly .NET SDK to connect to Space
Building a friendly .NET SDK to connect to SpaceBuilding a friendly .NET SDK to connect to Space
Building a friendly .NET SDK to connect to Space
 
OrientDB introduction - NoSQL
OrientDB introduction - NoSQLOrientDB introduction - NoSQL
OrientDB introduction - NoSQL
 
Using Play Framework 2 in production
Using Play Framework 2 in productionUsing Play Framework 2 in production
Using Play Framework 2 in production
 
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!
 
Cross-Platform Native Mobile Development with Eclipse
Cross-Platform Native Mobile Development with EclipseCross-Platform Native Mobile Development with Eclipse
Cross-Platform Native Mobile Development with Eclipse
 
Terrastore - A document database for developers
Terrastore - A document database for developersTerrastore - A document database for developers
Terrastore - A document database for developers
 
S313265 - Advanced Java API for RESTful Web Services at JavaOne Brazil 2010
S313265 - Advanced Java API for RESTful Web Services at JavaOne Brazil 2010S313265 - Advanced Java API for RESTful Web Services at JavaOne Brazil 2010
S313265 - Advanced Java API for RESTful Web Services at JavaOne Brazil 2010
 
Annotation processing and code gen
Annotation processing and code genAnnotation processing and code gen
Annotation processing and code gen
 
Hexagonal architecture in PHP
Hexagonal architecture in PHPHexagonal architecture in PHP
Hexagonal architecture in PHP
 
Ejb3 Struts Tutorial En
Ejb3 Struts Tutorial EnEjb3 Struts Tutorial En
Ejb3 Struts Tutorial En
 
Ejb3 Struts Tutorial En
Ejb3 Struts Tutorial EnEjb3 Struts Tutorial En
Ejb3 Struts Tutorial En
 
Hands On Spring Data
Hands On Spring DataHands On Spring Data
Hands On Spring Data
 
Angular Schematics
Angular SchematicsAngular Schematics
Angular Schematics
 
iPhone Development Intro
iPhone Development IntroiPhone Development Intro
iPhone Development Intro
 
Scalding Big (Ad)ta
Scalding Big (Ad)taScalding Big (Ad)ta
Scalding Big (Ad)ta
 

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

Modern Roaming for Notes and Nomad – Cheaper Faster Better Stronger
Modern Roaming for Notes and Nomad – Cheaper Faster Better StrongerModern Roaming for Notes and Nomad – Cheaper Faster Better Stronger
Modern Roaming for Notes and Nomad – Cheaper Faster Better Strongerpanagenda
 
How AI, OpenAI, and ChatGPT impact business and software.
How AI, OpenAI, and ChatGPT impact business and software.How AI, OpenAI, and ChatGPT impact business and software.
How AI, OpenAI, and ChatGPT impact business and software.Curtis Poe
 
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
 
DevEX - reference for building teams, processes, and platforms
DevEX - reference for building teams, processes, and platformsDevEX - reference for building teams, processes, and platforms
DevEX - reference for building teams, processes, and platformsSergiu Bodiu
 
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
 
Assure Ecommerce and Retail Operations Uptime with ThousandEyes
Assure Ecommerce and Retail Operations Uptime with ThousandEyesAssure Ecommerce and Retail Operations Uptime with ThousandEyes
Assure Ecommerce and Retail Operations Uptime with ThousandEyesThousandEyes
 
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
 
The Fit for Passkeys for Employee and Consumer Sign-ins: FIDO Paris Seminar.pptx
The Fit for Passkeys for Employee and Consumer Sign-ins: FIDO Paris Seminar.pptxThe Fit for Passkeys for Employee and Consumer Sign-ins: FIDO Paris Seminar.pptx
The Fit for Passkeys for Employee and Consumer Sign-ins: FIDO Paris Seminar.pptxLoriGlavin3
 
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
 
New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024
New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024
New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024BookNet Canada
 
A Journey Into the Emotions of Software Developers
A Journey Into the Emotions of Software DevelopersA Journey Into the Emotions of Software Developers
A Journey Into the Emotions of Software DevelopersNicole Novielli
 
UiPath Community: Communication Mining from Zero to Hero
UiPath Community: Communication Mining from Zero to HeroUiPath Community: Communication Mining from Zero to Hero
UiPath Community: Communication Mining from Zero to HeroUiPathCommunity
 
(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
 
Emixa Mendix Meetup 11 April 2024 about Mendix Native development
Emixa Mendix Meetup 11 April 2024 about Mendix Native developmentEmixa Mendix Meetup 11 April 2024 about Mendix Native development
Emixa Mendix Meetup 11 April 2024 about Mendix Native developmentPim van der Noll
 
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
 
The Ultimate Guide to Choosing WordPress Pros and Cons
The Ultimate Guide to Choosing WordPress Pros and ConsThe Ultimate Guide to Choosing WordPress Pros and Cons
The Ultimate Guide to Choosing WordPress Pros and ConsPixlogix Infotech
 
Data governance with Unity Catalog Presentation
Data governance with Unity Catalog PresentationData governance with Unity Catalog Presentation
Data governance with Unity Catalog PresentationKnoldus Inc.
 
What is DBT - The Ultimate Data Build Tool.pdf
What is DBT - The Ultimate Data Build Tool.pdfWhat is DBT - The Ultimate Data Build Tool.pdf
What is DBT - The Ultimate Data Build Tool.pdfMounikaPolabathina
 
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
 
Decarbonising Buildings: Making a net-zero built environment a reality
Decarbonising Buildings: Making a net-zero built environment a realityDecarbonising Buildings: Making a net-zero built environment a reality
Decarbonising Buildings: Making a net-zero built environment a realityIES VE
 

Recently uploaded (20)

Modern Roaming for Notes and Nomad – Cheaper Faster Better Stronger
Modern Roaming for Notes and Nomad – Cheaper Faster Better StrongerModern Roaming for Notes and Nomad – Cheaper Faster Better Stronger
Modern Roaming for Notes and Nomad – Cheaper Faster Better Stronger
 
How AI, OpenAI, and ChatGPT impact business and software.
How AI, OpenAI, and ChatGPT impact business and software.How AI, OpenAI, and ChatGPT impact business and software.
How AI, OpenAI, and ChatGPT impact business and software.
 
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
 
DevEX - reference for building teams, processes, and platforms
DevEX - reference for building teams, processes, and platformsDevEX - reference for building teams, processes, and platforms
DevEX - reference for building teams, processes, and platforms
 
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
 
Assure Ecommerce and Retail Operations Uptime with ThousandEyes
Assure Ecommerce and Retail Operations Uptime with ThousandEyesAssure Ecommerce and Retail Operations Uptime with ThousandEyes
Assure Ecommerce and Retail Operations Uptime with ThousandEyes
 
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...
 
The Fit for Passkeys for Employee and Consumer Sign-ins: FIDO Paris Seminar.pptx
The Fit for Passkeys for Employee and Consumer Sign-ins: FIDO Paris Seminar.pptxThe Fit for Passkeys for Employee and Consumer Sign-ins: FIDO Paris Seminar.pptx
The Fit for Passkeys for Employee and Consumer Sign-ins: FIDO Paris Seminar.pptx
 
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
 
New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024
New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024
New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024
 
A Journey Into the Emotions of Software Developers
A Journey Into the Emotions of Software DevelopersA Journey Into the Emotions of Software Developers
A Journey Into the Emotions of Software Developers
 
UiPath Community: Communication Mining from Zero to Hero
UiPath Community: Communication Mining from Zero to HeroUiPath Community: Communication Mining from Zero to Hero
UiPath Community: Communication Mining from Zero to Hero
 
(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...
 
Emixa Mendix Meetup 11 April 2024 about Mendix Native development
Emixa Mendix Meetup 11 April 2024 about Mendix Native developmentEmixa Mendix Meetup 11 April 2024 about Mendix Native development
Emixa Mendix Meetup 11 April 2024 about Mendix Native development
 
From Family Reminiscence to Scholarly Archive .
From Family Reminiscence to Scholarly Archive .From Family Reminiscence to Scholarly Archive .
From Family Reminiscence to Scholarly Archive .
 
The Ultimate Guide to Choosing WordPress Pros and Cons
The Ultimate Guide to Choosing WordPress Pros and ConsThe Ultimate Guide to Choosing WordPress Pros and Cons
The Ultimate Guide to Choosing WordPress Pros and Cons
 
Data governance with Unity Catalog Presentation
Data governance with Unity Catalog PresentationData governance with Unity Catalog Presentation
Data governance with Unity Catalog Presentation
 
What is DBT - The Ultimate Data Build Tool.pdf
What is DBT - The Ultimate Data Build Tool.pdfWhat is DBT - The Ultimate Data Build Tool.pdf
What is DBT - The Ultimate Data Build Tool.pdf
 
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
 
Decarbonising Buildings: Making a net-zero built environment a reality
Decarbonising Buildings: Making a net-zero built environment a realityDecarbonising Buildings: Making a net-zero built environment a reality
Decarbonising Buildings: Making a net-zero built environment a reality
 

Object Graph Mapping with Spring Data Neo4j 3 - Nicki Watt & Michael Hunger @ GraphConnect London 2013

  • 1. Object  Graph  Mapping   Spring  Data  Neo4j  3.0   Nicki  Wa(  @  opencredo     Michael  Hunger  @  neotechnology  
  • 2. Agenda   1.  Why  Object-­‐Graph-­‐Mapping?     2.  What  is  Spring  Data  (Neo4j)?     3.  Current  State  of  affairs   4.  SDN  3.0     5.  The  Future   6.  Some  Spring  Data  Neoj  Use-­‐Cases  
  • 3. 1.  Why     Object-­‐Graph-­‐Mapping?  
  • 4. Why  OGM  ?   -­‐  Convenience     -­‐  Simplify  interac2on  with  underlying  data   source:  Framework/Library  handles  basic  CRUD  type   funcVonality  for  you   -­‐  Provides  ability  to  work  with  na2ve  domain   language  constructs:  eg  domain  classes/objects   (POJOs  in  Java)  in  your  applicaVon     -­‐  Use  Cases:  examples  at  end  of  talk  
  • 5. Why  OGM  ?   But  …   -­‐  IndirecVon,  addiVonal  abstracVon  layer  adds   performance,  overhead   -­‐  Encourages  users  to  pull  larger  parts  of  the   database  into  memory  to  process  instead  of   le_ng  the  db  do  its  job  
  • 6. 2.  What  is     Spring  Data  Neo4j?  
  • 7. Spring  Data  Neo4j   -­‐  OGM  aimed  at  Java  world  &  uses  Spring   -­‐  Neo4j  Implementa2on  of  the  Spring  Data   project:  SpringSource/VMWare/Pivotal  iniVaVve  to  give   Spring  developers  easy  access  to  the  emerging  world  of   NOSQL.  Was  the  iniVal  and  first  Spring  Data  project  by  Rod   and  Emil   -­‐  Simple  programming  model:  annotaVon-­‐based   programming  for  applicaVons  with  rich  domains  
  • 8. With  and  without  SDN  ...  
  • 9. With  and  without  SDN  ...  
  • 10. Spring  Data  Neo4j  -­‐  features   -­‐  Two  mapping  modes:  Simple  &  Advanced   -­‐  Provides  Spring  Data  Repository  Support   -­‐  Ability  to  drop  down  to  Neo4j  Core  API  if   required   -­‐  (Neo4j  Server  Support)  
  • 11. Example  Domain:     “Conference  Management”  
  • 13. High  Level  Object  Model  
  • 15. SDN  Domain  Entities   @NodeEntity   @TypeAlias(value  =  "Conference")   public  class  Conference    {        @GraphId  Long  graphId;        @Indexed  String  name;        Date  date;          @RelatedTo(type="ATTENDEE")        Set<Person>  attendees;        @RelatedTo(type="TALK")        Set<Talk>  talks;   //  .  .  .   }  
  • 16. SDN  Domain  Entities   @NodeEntity   @TypeAlias(value  =  "Person")   public  class  Person  {        @GraphId  Long  graphId;        @Indexed(unique  =  true)  String  name;        @RelatedToVia        Iterable<Attended>  talksAttended;        //    .  .  .   }  
  • 17. SDN  Domain  Entities  (Relationship)   @RelationshipEntity(type  =  "LISTENED_TO")   public  class  Attended  {        @GraphId  Long  graphId;          @StartNode  Person  attendee;        @EndNode  Talk  talk;          Integer  rating;          //  .  .  .   }  
  • 18. SDN  Domain  Entities   @NodeEntity   @TypeAlias(value  =  "Talk")   public  class  Talk  {        @GraphId  Long  graphId;        @Indexed  String  name;        String  description;          @RelatedTo(type="SPEAKER")        Set<Speaker>  speakers;        @RelatedToVia(direction  =  INCOMING)        Set<Attended>  attendees;        //  .  .  .   }  
  • 19. SDN  Domain  Entities   @TypeAlias(value  =  "Speaker")   public  class  Speaker  extends  Person  {        String  bio;        @RelatedTo(type="SPEAKER",  direction  =  INCOMING)        Iterable<Talk>  talks;        //  .  .  .   }  
  • 20. SDN  Repository  Support  -­‐   Derived  Finder  Methods  
  • 21. SDN  Repository  Support   import  org....data.neo4j.repository.GraphRepository;   import  java.util.Set;   public  interface  TalkRepository  extends                                                                    GraphRepository<Talk>  {          Set<Talk>  findTalksBySpeakersName(String  name);   }  
  • 22. SDN  Repository  Support   findTalksBySpeakersName   @NodeEntity   @TypeAlias(value  =  "Talk")   public  class  Talk  {        @GraphId  Long  graphId;        @Indexed  String  name;        String  description;          @RelatedTo(type="SPEAKER")        Set<Speaker>  speakers;        @RelatedToVia(direction  =  INCOMING)        Set<Attended>  attendees;        //  .  .  .   }  
  • 23. SDN  Repository  Support   findTalksBySpeakersName   @TypeAlias(value  =  "Speaker")   public  class  Speaker  extends  Person  {          String  bio;        @RelatedTo(type="SPEAKER",  direction  =  INCOMING)        Iterable<Talk>  talks;   @NodeEntity        //  .  .  .   @TypeAlias(value  =  "Person")   }   public  class  Person  {        @GraphId  Long  graphId;        @Indexed(unique  =  true)  String  name;        @RelatedToVia(type="ATTENDED")        Iterable<Attended>  talksAttended;        //    .  .  .   }  
  • 24. SDN  Repository  Support   import  org....data.neo4j.repository.GraphRepository;   import  java.util.Set;   public  interface  TalkRepository  extends                                                                    GraphRepository<Talk>  {          Set<Talk>  findTalksBySpeakersName(String  name);   }    START  `talk_speakers`=node:`Person`(`name`={0})    MATCH  (`talk`)-­‐[:`SPEAKER`]-­‐>(`talk_speakers`)    RETURN  `talk`  
  • 25. SDN  Repository  Support  -­‐   Dynamic  Queries  
  • 26. SDN  Repository  Support   import  org....data.neo4j.repository.GraphRepository;   import  java.util.Set;   public  interface  TalkRepository  extends                                                                    GraphRepository<Talk>  {        //  Repository  Query  Method        @Query(value  =          "MATCH  (talk:Talk)-­‐[:SPEAKER]-­‐>(speaker:Speaker)  "  +          "WHERE  speaker.name={0}  RETURN  talk")        Set<Talk>  findTalksBySpeakersNameQuery(String  name);            //  .  .  .   }  
  • 27. 3.  Current     State  Of  Affairs  
  • 28. Current  State  Of  Affairs   -­‐  Current  ProducVon  Version:  2.3.2.RELEASE   -­‐  Neo4j  1.9.3  support  
  • 31. Disclaimer   SDN  3.0  s)ll  in  progress  ...   •  Subject  to  change   •  Primary  changes  are  Neo4j  2.0  compliance  -­‐   not  finalised  yet   •  follow  progress  on  githubh"p:// spring.neo4j.org/source  
  • 32. SDN  3.0   -­‐  Base  Neo4j  2.0  support   -­‐  Spring  3.2.5  (eventually  4  as  well)  support   -­‐  New  Type  Representa2on  Strategy  -­‐  Labels     -­‐  Migra2on  towards  more  Cypher  driven   founda2on   -­‐  Various  bug  fixes  and  enhancements  
  • 33. Neo4j  2.0  Support     -­‐  Will  be  able  to  run  against  a  Neo4j  2.X  DB   -­‐  Query  using  Labels   -­‐  Ability  to  use  new  Cypher  Syntax   -­‐  Schema  Indexes  (Work  in  Progress)  
  • 35. @NodeEntity   @TypeAlias(value  =  "Person")   public  class  Person  {    @Query("MATCH  (person)<-­‐[:ATTENDEE]-­‐(gathering:Conference)"  +                  "  WHERE    id(person)  =  {self}  "  +                  "  RETURN  gathering")    public  Iterable<Conference>  findAllConferencesAttended;    //    .  .  .   }       @NodeEntity   @TypeAlias(value  =  "Conference")   public  class  Conference    {    //  .  .  .   }  
  • 36. @NodeEntity   @TypeAlias(value  =  "Person")   public  class  Person  {        @GraphId  Long  graphId;        @Indexed(unique  =  true)  String  name;        @RelatedToVia(type="ATTENDED")        Iterable<Attended>  talksAttended;        //    .  .  .   }   @TypeAlias(value  =  "Speaker")   public  class  Speaker  extends  Person  {          String  bio;        @RelatedTo(type="SPEAKER",  direction  =  INCOMING)        Iterable<Talk>  talks;        //  .  .  .   }  
  • 37. Index  vs  Label  TRS   public  interface  ConferenceRepository  extends                                                                    GraphRepository<Conference>  {    /*              Query  generated  when  using  Index  Based  TRS                          START  `conference`=node:__types__(className="Conference")                          WHERE  `conference`.`date`  =  {0}                          RETURN  `conference`                Query  generated  when  using  Label  Based  TRS                          MATCH  (`conference`:`Conference`)                          WHERE  `conference`.`date`  =  {0}                          RETURN  `conference`      */        Set<Conference>  findAllByDate(Date  date);   }    
  • 38.
  • 39. Label  Type  Representation  Strategy   -­‐  Will  allow  for  schema  indexes**  to  be  used   -­‐  Will  add  addiVonal  __TYPE__XX  labels  to  nodes   -­‐  No  addiVonal  properVes  need  to  be  stored  on   nodes  to  represent  hierarchy  (If  Index  Based  TRS  used)   -­‐  No  addiVonal  nodes  need  to  be  created  to   represent  hierarchy  (If  Sub  Reference  based  TRS  used)  
  • 41. Future  Plans  -­‐  Cypher  based   •  •  •  •  •  Use  all  Cypher  for  the  mapping  layer   Align  embedded  and  remote  use   Benefit  from  Cypher  enhancements   Leverage  complex  query  mechanisms   Support  more  OGM  type  funcVonality   •  Client  side  caching   •  Lazy  loading  
  • 42. Future  Plans  -­‐  OGM   •  PotenVally  extract  or  use  standalone,   cypher-­‐based  Java-­‐Neo4j-­‐OGM   •  Also  useable  without  Spring  (Data)  
  • 43. Future  Plans  -­‐  Query  Results   •  Project  query  results  into  object  trees/graphs   •  Useful  for  direct  view-­‐layer  integraVon   •  Less  overhead  by  an  intermediate  domain   model  that  has  to  be  converted  
  • 44. Future  Plans  -­‐  Support   •  Be(er  support  for   •  •  •  •  Spring  Boot   Spring  Data  Rest   Remote  transacVonal  integraVon   JDBC-­‐Driver  in  Spring  
  • 45. Future  Plans  -­‐  Migration   •  Migrate  Type  RepresentaVon   •  Index-­‐based  -­‐>  Label  based   •  Refactor/Rename  EnVVes,  Fields,  References   •  Rename  Indexes   •  @TypeAlias  
  • 46. 6.  Some  Use  Cases  
  • 48. WhyOwnIt:  Ownership  Sharing  Service   •  Sharing  Culture     •  You  own  things  you  only  seldomly  need   •  You  need  things  you  don‘t  own   •  Match  needs  and  available  devices/tools   •  add  raVngs,  trust,  recommendaVons   •  locaVon  based,  close  to  you  for  pick-­‐up   •  Startup  
  • 53. Music  Sharing/Discovery/Recommendation   Service   •  Recommend  new  arVsts  and  songs  to  your   users   •  take  their  previous  listen-­‐history  into   account   •  look  at  what‘s  hot  amongst  their  friends   •  infer  broader  selecVon  via  bands  and  genres   •   Detect  duplicates  using  media-­‐fingerprints   •  copyright  infringements  
  • 57. Other  Use-­‐Cases   •  Financial  Services  -­‐  Asset  /  Account  Management   •  Bank  -­‐  Permission  Management  and  AuthorizaVon   •  EnVtlement   •  Data  Sopware  Provider  -­‐  Impact  analysis  of   changes   •  ImplicaVon  of  changes  on  the  company  core  asset:   DATA   •  Change  tracking   •  Root  Cause  Analysis  
  • 58. SAN/NAS  Provider  -­‐  Lifetime  device   tracking   •  Networked  Storage  Boxes   •  many  components,  disks,  controllers,  power  supply,   sensors   •  Tracking  of  measurement  data   •  Impact  analyVcs   •  Early  detecVon  of  anomalies   •  Intelligent  fail  over   •  Huge  number  of  domain  enVVes  (~450)   •  generaVng  domain  classes  and  repositories  
  • 59. Game  Retailer   •  Buy  and  Download  &  Game  on  Demand   •  Fraud  detecVon   •  delayed  payments,  charge  backs,  fradulent  keys  are   invalid   •  Convert  rules  to  traversals   •  co-­‐occurrance  of  sudden  large  sales   •  fradulent  e-­‐mail  pa(erns   •  CombinaVon  with  Oracle  Infrastructure   •  Cross-­‐Store  
  • 60. Does  it  love  me  or  does  it   not?  
  • 61. To  SDN  or  Not  to  SDN  ...   Domain-­‐Centric   •  Integrate  in  a  Springframework  Context   •  ExisVng  ApplicaVons  with  POJO  Domains   •  Move  a  manageable  amount  of  data  in  and   out  of  the  database  into  Domain  Objects   •  Rich,  connected  domain   •  MulVple  projecVons  
  • 62. To  SDN  or  Not  to  SDN  ...   Data-­‐Centric   •  high  volume  database  interacVons   •  reads  and  writes  (inserts)   •  thin  domain  view  on  top  of  graph  queries   •  remote  Client  to  Neo4j  Server  
  • 64. Resources   •  •  •  •  •  Spring  Data  Book     Spring  Data  Neo4j  Guidebook   Spring  Data  Neo4j  on  Spring.io   Chapter  in  Neo4j  in  AcVon   Cineasts.net  Tutorial  
  • 65. Thanks  ☺   Questions  ?   @techiewa(     @mesirii