Add jdbc-vs-jpa module: Spring Data JDBC vs JPA on a shared Order aggregate

Same Customer/Order/OrderItem domain modelled with Hibernate/Spring Data JPA and
Spring Data JDBC side by side, both running through a shared StatementLoggingDataSource
so SQL-statement counts are directly comparable. 11 tests, 11 captured transcripts,
6 doc chapters. Companion repo for the ankurm.com article on when to drop the ORM.
This commit is contained in:
2026-09-17 19:09:35 +00:00
parent 585eed4d57
commit 448c383879
41 changed files with 1811 additions and 17 deletions
@@ -0,0 +1,10 @@
Scenario: findById on an order with 1 item, then on an order with 5 items — no
@EntityGraph, no fetch annotation, this is the default and only behaviour.
statements for 1-item order: 2 (items loaded: 1)
statements for 5-item order: 2 (items loaded: 5)
Both counts are the same. There is no lazy vs eager choice to make because
Spring Data JDBC has no lazy loading: findById always returns the complete
aggregate. Compare to JpaBehaviorTest scenario 02, where the naive path is O(N)
in the number of orders touched, not items.