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 查看