用途:该技能面向 Spring 应用中的 JPA/Hibernate 实践,整理常见问题与对应的处理模式,帮助定位和改善持久层性能与事务问题。
主要能力:
- N+1 查询问题:说明大量 SELECT 的成因,给出 JOIN FETCH(JPQL)、@EntityGraph(含命名图)、批量抓取(@BatchSize 或 hibernate.default_batch_fetch_size)等方案。
- 懒加载与 LazyInitializationException:建议默认使用 LAZY,说明在事务外访问懒加载字段会报错,可选用 JOIN FETCH、在服务方法上使用 @Transactional、Open Session in View 或 DTO 投影。
- 查询优化:涉及分页、投影与索引;脏检查开销可使用只读事务与 DTO 缓解;并发修改丢失可用乐观锁(@Version)。
- 检测手段:开启 SQL 日志与 Hibernate 日志级别,观察生成的查询数量。
使用方式:当出现 N+1、过多查询、懒加载异常、抓取策略(EAGER/LAZY)、事务管理或实体关系设计等问题时调用该技能。
适用场景:Spring Boot 结合 JPA/Hibernate 的数据访问层开发与调优。
限制:资料未提供具体支持的框架版本、完整示例边界及与其他工具集成的说明;使用前应结合实际项目验证。