Agent skill · software engineering · affaan-m
jpa-patterns
Spring Boot中的JPA/Hibernate模式,用于实体设计、关系处理、查询优化、事务管理、审计、索引、分页和连接池。
Why this skill is useful
Provides specific JPA/Hibernate patterns and configurations that optimize entity design and query performance, which are not commonly known.
What it needs
About 1k tokens when loaded. Last updated 2026-08-06. 238,342 stars on the source repository.
What this skill does
JPA/Hibernate 模式 用于 Spring Boot 中的数据建模、存储库和性能调优。 何时激活 设计 JPA 实体和表映射时 定义关系时 (@OneToMany, @ManyToOne, @ManyToMany) 优化查询时 (N+1 问题预防、获取策略、投影) 配置事务、审计或软删除时 设置分页、排序或自定义存储库方法时 调整连接池 (HikariCP) 或二级缓存时 实体设计 启用审计: 关联关系和 N+1 预防 默认使用延迟加载;需要时在查询中使用 JOIN FETCH 避免在集合上使用 EAGER;对于读取路径使用 DTO 投影 存储库模式 使用投影进行轻量级查询: 事务 使用 @Transactional 注解服务方法 对读取路径使用 @Transactional(readOnly = true) 以进行优化 谨慎选择传播行为;避免长时间运行的事务 分页 对于类似游标的分页,在 JPQL 中包含 id > :lastId 并配合排序。 索引和性能 为常用过滤器添加索引(status、slug、外键) 使用与查询模式匹配的复合索引(status, createdat) 避免 select ;仅投影需要的列 使用 saveAll 和 hibernate.jdbc.batchsize 进行批量写入 连接池 (HikariCP) 推荐属性: 对于 PostgreSQL LOB 处理,添加: 缓存 一级缓存是每个 EntityManager 的;避免在事务之间保持实体 对于读取频繁的实体,谨慎考虑二级缓存;验证驱逐策略 迁移 使用 Flyway 或 Liquibase;切勿在生产中依赖 Hibernate 自动 DDL 保持迁移的幂等性和可添加性;避免无计划地删除列 测试数据访问 首选使用 Testcontainers 的 @DataJpaTest 来镜像生产环境 使用日志断言 SQL 效率:设置 logging.level.org.hibernate.SQL=DEBUG 和 logging.level.org.hibernate.orm.jdbc.bind=TRACE 以查看参数值 请记住:保持实体精简,查询有针对性,事务简短。通过获取策略和投影来预防 N+1 问题,并根据读写路径建立索引。
How to use it
Reference it in AdaL, Claude Code, Cursor or any coding agent — nothing to install:
@skills affaan-m/jpa-patterns--ba47df