SuperAPI AI 工具集

jpa-patterns

通用与其它

查看项目

更新于 10-16 05:05

技能介绍

用途:面向 Spring 应用中的 JPA/Hibernate,提供最佳实践与常见陷阱参考。当用户提到 N+1 问题、查询过多、LazyInitializationException、EAGER 与 LAZY 抓取策略、事务管理、实体关系设计或查询优化时使用。

主要能力:

  1. N+1 问题:用 JOIN FETCH、@EntityGraph 或 @BatchSize 批量抓取解决;可通过 spring.jpa.show-sql 与 org.hibernate.SQL 日志级别检测。
  2. 懒加载:默认使用 LAZY,覆盖 @ManyToOne/@OneToOne 的 EAGER 默认值;LazyInitializationException 可用 JOIN FETCH、@Transactional、DTO 投影解决,Open Session in View 不推荐。
  3. 事务:@Transactional(readOnly = true) 优化只读查询;注意同类内部调用会忽略 @Transactional,需注入自身或拆分服务;传播行为如 REQUIRED、REQUIRES_NEW、MANDATORY。
  4. 实体关系:双向 OneToMany/ManyToOne 配 helper 方法同步;ManyToMany 用 Set 避免重复;equals/hashCode 建议用业务键(如 @NaturalId)。
  5. 查询优化:分页、接口或类 DTO 投影、@Modifying 批量更新删除、@Version 乐观锁处理并发更新。
  6. 常见错误:@ManyToOne 上误用 CascadeType.ALL、缺失索引、toString() 包含懒加载字段。

使用方式:作为技能参考,在编写或审查 JPA 代码时按清单核对:无 N+1、默认 LAZY、大结果集分页、只读查询用 DTO 投影、批量操作用 bulk、并发访问实体加 @Version、常查列加索引、toString 不含懒字段、只读事务。

适用场景:Spring Boot + JPA/Hibernate 项目的性能排查、代码审查与关系建模。

限制:资料未提供安装命令、收费方式、平台支持与效果数据;相关技能包括 spring-boot-patterns、java-code-review、clean-code。