← ClaudeAtlas

jpa-patternslisted

JPA/Hibernate patterns for entity design, relationships, query optimization, transactions, auditing, indexing, pagination, and pooling in Spring Boot.
userInner/SKILLS · ★ 3 · AI & Automation · score 74
Install: claude install-skill userInner/SKILLS
# JPA/Hibernate Patterns Use for data modeling, repositories, and performance tuning in Spring Boot. ## When to Activate - Designing JPA entities and table mappings - Defining relationships (@OneToMany, @ManyToOne, @ManyToMany) - Optimizing queries (N+1 prevention, fetch strategies, projections) - Configuring transactions, auditing, or soft deletes - Setting up pagination, sorting, or custom repository methods - Tuning connection pooling (HikariCP) or second-level caching ## Entity Design ```java @Entity @Table(name = "markets", indexes = { @Index(name = "idx_markets_slug", columnList = "slug", unique = true) }) @EntityListeners(AuditingEntityListener.class) public class MarketEntity { @Id @GeneratedValue(strategy = GenerationType.IDENTITY) private Long id; @Column(nullable = false, length = 200) private String name; @Column(nullable = false, unique = true, length = 120) private String slug; @Enumerated(EnumType.STRING) private MarketStatus status = MarketStatus.ACTIVE; @CreatedDate private Instant createdAt; @LastModifiedDate private Instant updatedAt; } ``` Enable auditing: ```java @Configuration @EnableJpaAuditing class JpaConfig {} ``` ## Relationships and N+1 Prevention ```java @OneToMany(mappedBy = "market", cascade = CascadeType.ALL, orphanRemoval = true) private List<PositionEntity> positions = new ArrayList<>(); ``` - Default to lazy loading; use `JOIN FETCH` in queries when needed - Avoid `EAGER` on collections; use DTO projections