用途:该技能面向 Spring Data JPA 开发,帮助定义 JPA 实体、创建 Spring Data 仓库、编写查询方法并配置数据源与事务。
主要能力:支持使用 @Entity、@Id、@Column 等注解定义实体与关系映射;创建继承 JpaRepository、CrudRepository 的仓库;使用派生查询方法、@Query(JPQL/原生 SQL)与 Specifications;配置数据源、Hibernate 方言与事务管理;处理分页、排序、审计与实体图。
使用方式:先定义带 JPA 注解的实体,再创建继承 JpaRepository 的仓库并声明派生或自定义查询方法,然后在 application.yml 或 application.properties 中配置数据源,最后用服务层封装业务逻辑并设置事务边界。示例中实体使用 @Entity、@Table、@Id、@GeneratedValue、@Column、@CreatedDate;仓库方法如 findByEmail、findByNameContaining、返回 Page 的分页方法,以及带 @Query 和 @Param 的自定义查询;服务类使用 @Service、@Transactional,读操作使用 @Transactional(readOnly = true);配置项包括 spring.datasource.url、username、password 与 spring.jpa.hibernate.ddl-auto、show-sql 等。
适用场景:Spring Boot 项目中的持久层开发、实体与仓库设计、复杂查询、分页排序、事务控制与数据库配置。
限制与最佳实践:注意 N+1 查询问题,使用 @EntityGraph 或 JOIN FETCH 控制抓取策略;大数据集使用分页与批量操作;实体与 DTO 分离,避免在 API 响应中直接暴露 JPA 实体;明确事务边界;生产环境使用 Flyway 或 Liquibase 做模式迁移,而非 ddl-auto: update。官方文档见 https://spring.io/projects/spring-data-jpa 与 https://docs.spring.io/spring-data/jpa/reference/。