从 JPA 基础到复杂查询,填补 ORM 实战能力缺口

很多 Java 开发者在使用 Spring Data JPA 时,往往停留在简单的 CRUD 层面,一旦遇到多表关联、动态条件拼接或复杂排序分页,就不得不退回原生 SQL 或陷入类型不安全的困境。这门课正是为了解决这一问题:它不满足于让你“会用”注解,而是深入剖析 Spring Data JPA 的查询机制,帮助你从命名查询、JPQL 过渡到类型安全的 Criteria Query 和 Querydsl。课程前半部分夯实基础,明确 Repository 的定义规范与继承体系;后半部分集中攻克查询难点,包括排序分页的各种返回值差异、本地 SQL 映射以及原生 API 的使用。通过对比不同查询方式的优劣,你能清晰判断在何种场景下该选用哪种方案,从而避免写出性能低下的代码或难以维护的黑盒查询。

适合已掌握 Spring Boot 基础的进阶学习者

本课程并非零基础入门指南,建议读者在开始前已熟悉 Spring Boot 基本配置及 Maven/Gradle 构建工具,并对 JPA 实体映射有初步概念。如果你尚未理解@Entity、@Id 等基础注解的作用,或不清楚 JPA 与 Hibernate 的关系,建议先补充相关背景知识,否则在观看“详解查询方法命名规则”和“自定义 JPQL 语句查询”等章节时,可能会因概念模糊而跟不上节奏。课程从“快速入门”章节入手,旨在通过对比传统 JPA 与 Spring Data JPA 的差异,快速唤醒已有知识并建立新的编程范式,因此适合那些已经尝试过但感到困惑、希望系统梳理查询体系的技术学习者。它不重复讲解环境搭建,而是直接切入核心 API 的使用细节,强调“缺什么补什么”的实战导向。

学完能独立构建类型安全且灵活的数据访问层

完成本课程后,你将能够独立设计并实现复杂的业务查询逻辑。具体而言,你应能熟练运用命名查询和 JPQL 处理静态复杂查询,掌握 Criteria Query 以应对运行时动态条件拼接,并利用 Querydsl 实现编译期类型安全的查询构建。此外,课程涵盖的排序分页技巧将帮助你优化大数据量场景下的性能,避免 N+1 问题。配套练习是学习的关键,建议不要仅停留在视频观看,而应跟随资料包中的示例代码,动手复现每个查询场景,特别是“多种分页方式返回值”和“本地命名查询映射”部分,通过调试理解其底层行为。只有亲手编写并验证过这些查询,才能在内化过程中真正解决“查得动但查不准”或“能查询但难扩展”的实际工程问题。

课程目录

1 Spring Data JPA概述及课程概要介绍 (25:40)
2 JPA快速入门 (31:23)
3 Spring Data JPA快速入门 (31:10)
4 如何定义Repository (16:06)
5 详解查询方法命名规则 (33:36)
6 自定义JPQL语句查询 (23:02)
7 多种方式排序,分页。总结各种方法的返回值 (42:01)
8 详解命名查询,本地命名查询 (31:01)
9 本地命名查询的映射 (32:35)
10 使用原生的JPA API (23:07)
11 详解JPA Criteria Query查询 (40:53)
12 Spring Data JPA Criteria Query (24:00)
13 Spring Data JPA集成Querydsl查询 (43:43)
14 Query by Example (39:01)
15 一对一关联关系 (44:06)
16 双向一对一关联关系 (30:38)
17 一对多,多对一关联关系 (42:46)
18 多对多关联关系 (55:14)
19 关联关系总结 (34:09)
20 EnableJpaRepositories注解(上) (35:04)
21 EnableJpaRepositories注解(下) (21:57)
22 扩展Repository(上) (27:56)
23 扩展Repository(下) (17:54)
24 Entity生命周期 (29:41)
25 审计 (32:55)
26 时间字段映射 (31:23)
27 QueryHint使用详解 (15:59)
28 乐观锁 (39:38)
29 悲观锁 (33:01)
30 Spring Data JPA集成openJPA (16:43)
31 Spring Data JPA事务 (45:39)
32 Spring Data JPA缓存 (01:06:02)
33 Spring Boot整合Spring Data JPA (37:33)
34 Spring Data JPA web (39:44)
35 Spring Data JPA测试 (31:49)
36 Spring Data JPA构建微服务实战 (01:10:04)