domain driven domain driven design with relational design
play

Domain Driven Domain Driven Design with relational Design with - PowerPoint PPT Presentation

21/02/2019 Domain Driven Design with relational Databases and Spring Data JDBC. Domain Driven Domain Driven Design with relational Design with relational Databases and Spring Databases and Spring Data JDBC. Data JDBC.


  1. 21/02/2019 Domain Driven Design with relational Databases and Spring Data JDBC. Domain Driven Domain Driven Design with relational Design with relational Databases and Spring Databases and Spring Data JDBC. Data JDBC. http://blog.schauderhaft.de/talk-ddd-jdbc/talk.html?print-pdf#/ 1/59

  2. 21/02/2019 Domain Driven Design with relational Databases and Spring Data JDBC. Preface: Buying a Sofa. Preface: Buying a Sofa. Can you help me pick up my new sofa? Can you help me pick up my new sofa? Can you help me pick up my new sofa? http://blog.schauderhaft.de/talk-ddd-jdbc/talk.html?print-pdf#/ 2/59

  3. 21/02/2019 Domain Driven Design with relational Databases and Spring Data JDBC. And now to something completely And now to something completely different! different! http://blog.schauderhaft.de/talk-ddd-jdbc/talk.html?print-pdf#/ 3/59

  4. 21/02/2019 Domain Driven Design with relational Databases and Spring Data JDBC. Relational Databases are awesome. Relational Databases are awesome. http://blog.schauderhaft.de/talk-ddd-jdbc/talk.html?print-pdf#/ 4/59

  5. 21/02/2019 Domain Driven Design with relational Databases and Spring Data JDBC. DRY. DRY. http://blog.schauderhaft.de/talk-ddd-jdbc/talk.html?print-pdf#/ 5/59

  6. 21/02/2019 Domain Driven Design with relational Databases and Spring Data JDBC. Strong consistency. Strong consistency. http://blog.schauderhaft.de/talk-ddd-jdbc/talk.html?print-pdf#/ 6/59

  7. 21/02/2019 Domain Driven Design with relational Databases and Spring Data JDBC. Mathematically sound. Mathematically sound. http://blog.schauderhaft.de/talk-ddd-jdbc/talk.html?print-pdf#/ 7/59

  8. 21/02/2019 Domain Driven Design with relational Databases and Spring Data JDBC. Extremely powerful query language. Extremely powerful query language. http://blog.schauderhaft.de/talk-ddd-jdbc/talk.html?print-pdf#/ 8/59

  9. 21/02/2019 Domain Driven Design with relational Databases and Spring Data JDBC. http://blog.schauderhaft.de/talk-ddd-jdbc/talk.html?print-pdf#/ 9/59

  10. 21/02/2019 Domain Driven Design with relational Databases and Spring Data JDBC. But there are problems! But there are problems! http://blog.schauderhaft.de/talk-ddd-jdbc/talk.html?print-pdf#/ 10/59

  11. 21/02/2019 Domain Driven Design with relational Databases and Spring Data JDBC. Scalability Scalability http://blog.schauderhaft.de/talk-ddd-jdbc/talk.html?print-pdf#/ 11/59

  12. 21/02/2019 Domain Driven Design with relational Databases and Spring Data JDBC. Foreign keys cause locks. Foreign keys cause locks. http://blog.schauderhaft.de/talk-ddd-jdbc/talk.html?print-pdf#/ 12/59

  13. 21/02/2019 Domain Driven Design with relational Databases and Spring Data JDBC. Foreign keys cost resources. Foreign keys cost resources. http://blog.schauderhaft.de/talk-ddd-jdbc/talk.html?print-pdf#/ 13/59

  14. 21/02/2019 Domain Driven Design with relational Databases and Spring Data JDBC. Schemas don’t scale across servers. Schemas don’t scale across servers. http://blog.schauderhaft.de/talk-ddd-jdbc/talk.html?print-pdf#/ 14/59

  15. 21/02/2019 Domain Driven Design with relational Databases and Spring Data JDBC. The ORM disaster. The ORM disaster. http://blog.schauderhaft.de/talk-ddd-jdbc/talk.html?print-pdf#/ 15/59

  16. 21/02/2019 Domain Driven Design with relational Databases and Spring Data JDBC. Entity == Table. Entity == Table. http://blog.schauderhaft.de/talk-ddd-jdbc/talk.html?print-pdf#/ 16/59

  17. 21/02/2019 Domain Driven Design with relational Databases and Spring Data JDBC. Property == Column. Property == Column. http://blog.schauderhaft.de/talk-ddd-jdbc/talk.html?print-pdf#/ 17/59

  18. 21/02/2019 Domain Driven Design with relational Databases and Spring Data JDBC. What about references? What about references? http://blog.schauderhaft.de/talk-ddd-jdbc/talk.html?print-pdf#/ 18/59

  19. 21/02/2019 Domain Driven Design with relational Databases and Spring Data JDBC. Lazy loading? Lazy loading? http://blog.schauderhaft.de/talk-ddd-jdbc/talk.html?print-pdf#/ 19/59

  20. 21/02/2019 Domain Driven Design with relational Databases and Spring Data JDBC. Eager loading? Eager loading? http://blog.schauderhaft.de/talk-ddd-jdbc/talk.html?print-pdf#/ 20/59

  21. 21/02/2019 Domain Driven Design with relational Databases and Spring Data JDBC. JPA offers both! JPA offers both! http://blog.schauderhaft.de/talk-ddd-jdbc/talk.html?print-pdf#/ 21/59

  22. 21/02/2019 Domain Driven Design with relational Databases and Spring Data JDBC. What about persisting/deleting? What about persisting/deleting? http://blog.schauderhaft.de/talk-ddd-jdbc/talk.html?print-pdf#/ 22/59

  23. 21/02/2019 Domain Driven Design with relational Databases and Spring Data JDBC. (Optimistic) Locking? (Optimistic) Locking? http://blog.schauderhaft.de/talk-ddd-jdbc/talk.html?print-pdf#/ 23/59

  24. 21/02/2019 Domain Driven Design with relational Databases and Spring Data JDBC. How about testing? How about testing? http://blog.schauderhaft.de/talk-ddd-jdbc/talk.html?print-pdf#/ 24/59

  25. 21/02/2019 Domain Driven Design with relational Databases and Spring Data JDBC. The solution comes from 2004. The solution comes from 2004. Actually it’s from the 1990s! Actually it’s from the 1990s! Actually it’s from the 1990s! http://blog.schauderhaft.de/talk-ddd-jdbc/talk.html?print-pdf#/ 25/59

  26. 21/02/2019 Domain Driven Design with relational Databases and Spring Data JDBC. DDD DDD http://blog.schauderhaft.de/talk-ddd-jdbc/talk.html?print-pdf#/ 26/59

  27. 21/02/2019 Domain Driven Design with relational Databases and Spring Data JDBC. Aggregates. Aggregates. An AGGREGATE is a cluster of associated An AGGREGATE is a cluster of associated An AGGREGATE is a cluster of associated objects that we treat as a unit. objects that we treat as a unit. objects that we treat as a unit. Domain-Driven Design — Eric Evans http://blog.schauderhaft.de/talk-ddd-jdbc/talk.html?print-pdf#/ 27/59

  28. 21/02/2019 Domain Driven Design with relational Databases and Spring Data JDBC. http://blog.schauderhaft.de/talk-ddd-jdbc/talk.html?print-pdf#/ 28/59

  29. 21/02/2019 Domain Driven Design with relational Databases and Spring Data JDBC. Aggregate Root. Aggregate Root. http://blog.schauderhaft.de/talk-ddd-jdbc/talk.html?print-pdf#/ 29/59

  30. 21/02/2019 Domain Driven Design with relational Databases and Spring Data JDBC. http://blog.schauderhaft.de/talk-ddd-jdbc/talk.html?print-pdf#/ 30/59

  31. 21/02/2019 Domain Driven Design with relational Databases and Spring Data JDBC. Aggregates are Boundaries of integrity Aggregates are Boundaries of integrity http://blog.schauderhaft.de/talk-ddd-jdbc/talk.html?print-pdf#/ 31/59

  32. 21/02/2019 Domain Driven Design with relational Databases and Spring Data JDBC. Transactional consistency inside Transactional consistency inside http://blog.schauderhaft.de/talk-ddd-jdbc/talk.html?print-pdf#/ 32/59

  33. 21/02/2019 Domain Driven Design with relational Databases and Spring Data JDBC. Eventual consistency between Eventual consistency between aggregates aggregates http://blog.schauderhaft.de/talk-ddd-jdbc/talk.html?print-pdf#/ 33/59

  34. 21/02/2019 Domain Driven Design with relational Databases and Spring Data JDBC. http://blog.schauderhaft.de/talk-ddd-jdbc/talk.html?print-pdf#/ 34/59

  35. 21/02/2019 Domain Driven Design with relational Databases and Spring Data JDBC. How to represent this in Java? How to represent this in Java? http://blog.schauderhaft.de/talk-ddd-jdbc/talk.html?print-pdf#/ 35/59

  36. 21/02/2019 Domain Driven Design with relational Databases and Spring Data JDBC. Annotations!!!! Annotations!!!! http://blog.schauderhaft.de/talk-ddd-jdbc/talk.html?print-pdf#/ 36/59

  37. 21/02/2019 Domain Driven Design with relational Databases and Spring Data JDBC. http://blog.schauderhaft.de/talk-ddd-jdbc/talk.html?print-pdf#/ 37/59

  38. 21/02/2019 Domain Driven Design with relational Databases and Spring Data JDBC. No References Across Aggregates No References Across Aggregates It makes life much easier if you just keep a It makes life much easier if you just keep a It makes life much easier if you just keep a reference of the aggregate’s ID rather than reference of the aggregate’s ID rather than reference of the aggregate’s ID rather than the actual aggregate itself. the actual aggregate itself. the actual aggregate itself. — David Masters http://blog.schauderhaft.de/talk-ddd-jdbc/talk.html?print-pdf#/ 38/59

  39. 21/02/2019 Domain Driven Design with relational Databases and Spring Data JDBC. It cuts down complexity It cuts down complexity http://blog.schauderhaft.de/talk-ddd-jdbc/talk.html?print-pdf#/ 39/59

  40. 21/02/2019 Domain Driven Design with relational Databases and Spring Data JDBC. What to load/persist/delete? What to load/persist/delete? Everything within an aggregate. Everything within an aggregate. Everything within an aggregate. http://blog.schauderhaft.de/talk-ddd-jdbc/talk.html?print-pdf#/ 40/59

  41. 21/02/2019 Domain Driven Design with relational Databases and Spring Data JDBC. Optimistic locking of collections? Optimistic locking of collections? Lock on the aggregate root. Lock on the aggregate root. Lock on the aggregate root. http://blog.schauderhaft.de/talk-ddd-jdbc/talk.html?print-pdf#/ 41/59

Recommend


More recommend