Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Pouring Coffee into the Matrix: Building Java A...

Pouring Coffee into the Matrix: Building Java Applications on Neo4j

Many of us have built applications for traditional data structures (like relational database tables), but is it different for graph data stores? Do developers need to retool and relearn? In this session, we'll cover a brief introduction to graphs, walk you through writing a typical Java application with Spring, and connect it to Neo4j. From interacting with the graph data from the application to deploying to the cloud, you'll see the process from start to finish. You'll also learn how to tackle pitfalls and pick up tips along the way, as well as explore the ways we can build, deploy, and connect applications to the database. This will come alive through a live demo, as we see the results of our efforts. Come to this session to build your business applications for graph data!

Jennifer Reif

June 07, 2022
Tweet

More Decks by Jennifer Reif

Other Decks in Technology

Transcript

  1. Jennifer Reif Email: [email protected] Twitter: @JMHReif LinkedIn: linkedin.com/in/jmhreif Github: GitHub.com/JMHReif

    Website: jmhreif.com Pouring Coffee into the Matrix Building Java applications on Neo4j
  2. Who Am I? • Developer + Advocate • Continuous learner

    • Technical content writer • Conference speaker • Other: geek
  3. Java App Data Store Options • Relational • Straight JDBC

    • JDBC Template • JOOQ • JPA or Hibernate • NoSQL - Document • MongoDB • Graph • Neo4j
  4. Java domain • Java Versions (i.e. 8, 11, 17) •

    Changes between versions over time • Di ff s
  5. Java Entity - Domain Class • Class • Entity/Object •

    Represents domain type • General outline for objects of that type • Variables/Properties • Details for that entity • Values may not always exist • Constructor - instance of object • Each instance is unique object with varying info @Node @Data @RequiredArgsConstructor public class JavaVersion { @Id @Property("version") private fi nal String javaVersion; private String name, codeName, status, apiSpec; private LocalDate gaDate, eolDate; }
  6. Java Domain Relationships • Adding relationships • Add variable as

    pointer to another object • Links entities together • Might have some annotations for mapping @Node @Data @RequiredArgsConstructor public class JavaVersion { @Relationship(“FROM_NEWER”) private List<VersionDiff> olderVersionDiffs; }
  7. • Set theory - rows and columns • Schema -

    rigid, enforced • Entities - table row • Metadata - columns • Relationships - crafted JOINs • Queries - JOINs at runtime • Indexes - Lookups scans Graphs for Java devs • Graph theory - entity network • Schema - fl exible, optional • Entities - node (object) • Metadata - properties • Relationships - stored joins • Queries - joins at write • Indexes - place to start Relational database Graph database
  8. Nodes • Represent objects or entities • Can be labeled

    • May have properties JavaVersion VersionDiff JavaVersion version: “17” gaDate: 2021-09-14 fromVersion: “17.0.3+7-tem” toVersion: “1.6.0_45-oracle” version: “6” gaDate: 2006-12-12 codeName: “Mustang”
  9. Relationships • Must have a type • Must have a

    direction JavaVersion VersionDiff JavaVersion version: “17”
  10. Relationships • Must have a type • Must have a

    direction • May have properties JavaVersion VersionDiff JavaVersion version: “17”
  11. Relationships • Must have a type • Must have a

    direction • May have properties • Nodes can share multiple relationships JavaVersion VersionDiff JavaVersion version: “17”
  12. Label • A group of nodes • Like a category

    • Domain class :) Person Employee Customer
  13. Properties • Key-value pair • Associated with node or relationship

    • Like a variable name and value JavaVersion JavaVersion version: “17” version: “6” versionSteps: 3 M IG RATES gaDate: 2021-09-14 gaDate: 2006-12-12 codeName: “Mustang”
  14. Language drivers • Neo4j Java driver (o ffi cial) •

    Spring Data Neo4j • Uses Neo4j Java driver at base • Other options: • O ffi cial drivers-> Python, JavaScript, Go, .NET • Java frameworks-> Quarkus, Helidon, Micronaut, etc
  15. Spring provisions • Spring Initializr • Spring Boot’s reduction of

    boilerplate • Annotation-based OGM for POJOs • Query derivation + DSL for custom (Cypher) • Spring Data’s easy connection to Neo4j • BOLT or HTTP
  16. Resources • Source code: github.com/JMHReif/pouring-co ff ee-into-matrix-lombok • Spring Data

    Neo4j documentation: dev.neo4j.com/sdn-docs • Neo4j AuraDB: bit.ly/neo4j-aura • Blog: bit.ly/jmhreif-blog Jennifer Reif Email: [email protected] Twitter: @JMHReif LinkedIn: linkedin.com/in/jmhreif Github: GitHub.com/JMHReif Website: jmhreif.com