What problem does it solve?
This set of JPA patterns provides guidance to prevent common persistence issues in Java applications, such as inefficient data access, inconsistent entity equality semantics, and missing auditing hooks.
Core Features & Use Cases
- Entity design guidance: implement business-key equality and stable hashCode/equals strategies to ensure correct behavior in collections and persistence contexts.
- Relationship management: enforce LAZY fetching by default and use explicit fetch strategies to avoid N+1 queries.
- N+1 prevention: apply EntityGraph, JOIN FETCH, and batch sizing techniques to optimize data loading.
- Projections and pagination: implement interface and DTO projections, and use proper pagination with careful query design.
- Auditing and versioning: enable auditing for created/updated timestamps and users, and apply optimistic locking to handle concurrent updates.
- Dynamic queries: utilize Specifications and dynamic query composition for flexible filtering.
Quick Start
Apply the patterns in your entity and repository layers to reduce data access issues and improve domain model clarity.