Skip to main content

jpa-hibernate-optimization

Optimize JPA/Hibernate: entity design, query performance, N+1 prevention, caching strategies

来源信息

仓库
Hack23/cia
最近来源活动
2026年2月1日 00:05
检测到的 SKILL.md 语言
英语
星标
239
分支
57

安装方式

默认使用会先检查来源的 Prompt;你也可以切换为直接命令,或下载本地副本。

检查来源文件

决定是否安装前,请先阅读 SKILL.md,以及 SkillsMP 当前展示的配套文件。

正在显示 SKILL.md

SKILL.md
来源说明 · 只读预览
name
jpa-hibernate-optimization
description
Optimize JPA/Hibernate: entity design, query performance, N+1 prevention, caching strategies
# JPA/Hibernate Optimization Skill ## Purpose Optimize database access with proper entity design, query optimization, and caching. ## When to Use - ✅ Designing entity relationships - ✅ Optimizing slow queries - ✅ Preventing N+1 queries - ✅ Implementing caching ## Entity Optimization ```java @Entity @Table(name = "politician", indexes = { @Index(name = "idx_politician_party", columnList = "party"), @Index(name = "idx_politician_district", columnList = "district") }) @Cacheable @org.hibernate.annotations.Cache(usage = CacheConcurrencyStrategy.READ_WRITE) public class Politician { @Id private String id; @Column(name = "first_name", nullable = false, length = 50) private String firstName; @ManyToOne(fetch = FetchType.LAZY) @JoinColumn(name = "party_id") private Party party; @OneToMany(mappedBy = "politician", cascade = CascadeType.ALL, orphanRemoval = true) @BatchSize(size = 20) private List<VotingRecord> votingRecords; } ``` ## Query Optimization ```java // Use JOIN FETCH to prevent N+1 @Query("SELECT p FROM Politician p JOIN FETCH p.party WHERE p.district = :district") List<Politician> findByDistrictWithParty(@Param("district") String district); // Use DTOs for read-only queries @Query("SELECT new com.hack23.cia.dto.PoliticianSummary(p.id, p.firstName, p.lastName) " + "FROM Politician p WHERE p.active = true") List<PoliticianSummary> findActivePoliticiansSummary(); // Pagination for large result sets Page<Politician> findByParty(String party, Pageable pageable); ``` ## Second-Level Cache ```yaml spring: jpa: properties: hibernate: cache: use_second_level_cache: true region: factory_class: org.hibernate.cache.jcache.JCacheRegionFactory javax: cache: provider: org.ehcache.jsr107.EhcacheCachingProvider ``` ## References - Hibernate: https://hibernate.org/ - DATA_MODEL.md
在 GitHub 查看