用途:该技能在生成 JPA 实体、Repository、查询或任何涉及持久层的代码时使用,提供一套 Spring Data JPA 的编码约定与常见陷阱规避规则。
主要能力与约定:实体使用 @Entity、@Table 命名,ID 采用 GenerationType.UUID,枚举一律 @Enumerated(EnumType.STRING),无参构造用 @NoArgsConstructor(access = PROTECTED),仅用 @Getter 不用 @Setter,集合内联初始化为 new ArrayList<>(),通过静态工厂与行为方法维护状态。
查询与性能:用 JOIN FETCH 或 @EntityGraph 解决 N+1;只读视图用接口投影;简单条件用派生查询,复杂连接用 JPQL,必要时才用 nativeQuery;存在性检查用 existsBy。列表接口始终使用 Pageable 分页;深分页建议改用基于 (createdAt, id) 的 keyset 游标分页并建立相应索引。批量插入可开启 hibernate.jdbc.batch_size、order_inserts、order_updates,但 GenerationType.IDENTITY 会静默禁用批量插入,故推荐 UUID 或池化序列。
关系映射:@ManyToOne 与 @ManyToMany 始终 LAZY,双向关系由子端持有外键,父端提供同步两侧的辅助方法,@OneToMany 需 orphanRemoval = true。
限制:资料未提供安装命令、版本要求、收费与平台信息;内容为编码规范建议,实际效果取决于项目配置与数据库。