JPA/Hibernate Kalıpları
Spring Boot'ta veri modelleme, repository'ler ve performans ayarlaması için kullanın.
Ne Zaman Aktifleştirmeli
- JPA entity'leri ve tablo eşlemelerini tasarlarken
- İlişkileri tanımlarken (@OneToMany, @ManyToOne, @ManyToMany)
- Sorguları optimize ederken (N+1 önleme, fetch stratejileri, projections)
- Transaction'ları, auditing'i veya soft delete'leri yapılandırırken
- Sayfalama, sıralama veya özel repository metodları kurarken
- Connection pooling (HikariCP) veya second-level caching ayarlarken
Entity Tasarımı
@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;
}
Auditing'i etkinleştir:
@Conf…