Data Access
Everything from raw SQL to full JPA entity modelling — repositories and the N+1 problem, transaction boundaries and propagation, JdbcClient, Flyway migrations, caching, and tuning HikariCP.
Spring Data JPA: Entities, Repositories and the N+1 Problem
Map entities and relationships, get repositories for free, and learn to see the query count — because the N+1 problem is invisible until you look.
Transactions: Boundaries, Propagation and the Proxy Trap
Where @Transactional belongs, what propagation and isolation change, why checked exceptions don't roll back, and the self-call that does nothing.
JdbcClient: When Dropping the ORM Is the Simpler Choice
Fluent SQL with JdbcClient, mapping results with RowMapper, named parameters, and an honest account of when JPA is the wrong tool.
Flyway: Schema Changes You Can Deploy on a Friday
Versioned migrations, why ddl-auto must never run in production, and the expand-contract pattern that makes a column rename safe under rolling deployment.
Caching: @Cacheable, Redis, and the Invalidation Problem
Spring's cache abstraction, swapping ConcurrentMap for Caffeine or Redis without code changes, and the traps that make caching harder than it looks.
HikariCP: Why a Bigger Pool Is Usually Slower
What each Hikari timeout controls, how to size a pool with arithmetic rather than guesswork, and how to see exhaustion coming before it becomes an outage.