为什么需要这门课

很多写 Java 后端的人,卡在“会写 SQL,但不会用 ORM”或者“会用 Hibernate,但一换 Spring Boot 就不知道怎么配”。这门课不是从零教你怎么写 Java,而是帮你把 JPA 这条线彻底打通:从传统 JDBC 的痛点,到 JPA 规范本身,再到 Spring Data 是怎么把它包装成“一个接口就能查库”的。如果你已经能写基本的 CRUD,但项目里一遇到关联查询、复杂条件、懒加载就发怵,那这门课正好补上这块缺口。

它适合的基础:知道 Java 语法、能写简单的 SQL、用过 Spring Boot 但只停留在 JdbcTemplate 或者 MyBatis 的层面。不需要你已经懂 Hibernate 的缓存机制,也不需要你背过 JPA 注解——课程会从最基础的实体映射讲起。但如果你连“什么是持久层”都还没概念,建议先补一下 ORM 的基本概念,再回来看这个。

建议先看哪几块

如果你是第一次接触 JPA,不要跳着看。先看前面关于 ORM 概述、JPA 与 Hibernate 关系、JPA 三方面技术的部分,这几节虽然短,但决定了你后面能不能理解“为什么 Spring Data 要这么设计”。看完概念后,紧接着看“导入依赖、创建测试表和实体类、使用注解标注实体类、核心配置文件、测试环境”这几块——它们是整套课的地基,你照着做一遍,才能明白 JPA 到底帮你省了什么。

如果你已经用过 Hibernate,只是对 Spring Data JPA 的接口不熟,那可以跳过前面几节,直接从“Spring Data 的 Repository 接口”开始看。但有一点要注意:课程里关于“JPA 注解”的部分,哪怕你觉得自己会,也值得快速扫一遍,因为很多细节(比如主键生成策略、字段映射的默认值)在 Spring Data 里会反复用到。

学完能独立做什么

学完这门课,你应该能独立搭一个基于 Spring Boot + Spring Data JPA 的持久层:自己建实体类、写 Repository 接口、配好数据源,然后跑通增删改查。更进一步,你能处理常见的关联关系(一对一、一对多、多对多),会写自定义查询(JPQL 或者方法名推导),也能理解事务和懒加载在什么时候会踩坑。

资料怎么配合练习:不要只看视频。每讲一个知识点,就停下来把示例代码敲一遍,然后改一个字段、加一个条件,看运行结果是不是你预想的。课程里的测试表和数据是给你练手的,但真正学会的标志是,你能把自己项目里的一张真实表用 JPA 映射出来,并且能解释为什么这么写。遇到报错,优先对照课程里讲过的配置和注解,不要急着去搜别的教程——这门课覆盖的常见坑已经足够你排查大部分问题。

课程目录

1-1 [JPA入门] 课程简介 (04:56)
1-2 [JPA入门] ORM概述 (06:37)
1-3 [JPA入门] 传统的持久层解决方案 (05:13)
1-4 [JPA入门] JPA概述 (06:39)
1-5 [JPA入门] JPA和Hibernate的关系 (02:37)
1-6 [JPA入门] JPA的供应商 (03:09)
1-7 [JPA入门] JPA的优势 (03:04)
1-8 [JPA入门] JPA包括3方面的技术 (03:06)
1-9 [JPA入门] 导入项目中依赖 (05:32)
1-10 [JPA入门] 创建测试表和实体类 (03:34)
1-11 [JPA入门] 使用JPA注解标注实体类 (10:43)
1-12 [JPA入门] JPA的核心配置文件 (06:07)
1-13 [JPA入门] 测试JPA环境 (09:29)
1-14 [JPA入门] JPA小结 (12:12)
2-1 [JPA常用的注解] JPA中注解概述 (04:57)
2-2 [JPA常用的注解] @Entity注解 (02:38)
2-3 [JPA常用的注解] @Table注解 (18:50)
2-4 [JPA常用的注解] @Id注解 (04:35)
2-5 [JPA常用的注解] 去除IDEA注解波浪线 (01:01)
2-6 [JPA常用的注解] @GeneratedValue注解 (09:51)
2-7 [JPA常用的注解] @Colum注解 (08:33)
2-8 [JPA常用的注解] @Basic注解 (04:08)
2-9 [JPA常用的注解] @Transient注解 (04:53)
2-10 [JPA常用的注解] @Temporal注解 (03:54)
2-11 [JPA常用的注解] JPA常见注解小结 (03:18)
3-1 [JPA主键生成策略] JPA中主键生成策略概念 (02:39)
3-2 [JPA主键生成策略] IDENTITY策略 (11:57)
3-3 [JPA主键生成策略] SEQUENCE策略 (13:52)
3-4 [JPA主键生成策略] AUTO策略 (01:49)
3-5 [JPA主键生成策略] TABLE策略 (06:31)
4-1 [JPA的API介绍] Persistence类使用 (23:15)
4-2 [JPA的API介绍] EntityManagerFactory对象 (17:31)
4-3 [JPA的API介绍] 关于重载方法 (03:39)
4-4 [JPA的API介绍] 对象的4种状态 (06:21)
4-5 [JPA的API介绍] find方法 (04:29)
4-6 [JPA的API介绍] getReference方法 (05:06)
4-7 [JPA的API介绍] persist方法 (02:40)
4-8 [JPA的API介绍] remove方法 (04:29)
4-9 [JPA的API介绍] merge方法 (11:17)
4-10 [JPA的API介绍] flush方法 (03:12)
4-11 [JPA的API介绍] refresh方法 (03:06)
4-12 [JPA的API介绍] EntityTransaction事务相关 (04:12)
5-1 [JPA的各种查询] JPQL简介 (03:33)
5-2 [JPA的各种查询] 抽取JPAUtil工具类 (05:50)
5-3 [JPA的各种查询] 全部查询 (06:36)
5-4 [JPA的各种查询] 条件查询 (07:47)
5-5 [JPA的各种查询] 分页查询 (10:03)
5-6 [JPA的各种查询] 排序查询 (04:14)
5-7 [JPA的各种查询] 统计查询 (08:15)
6-1 [SpringDataJPA入门] SpringDataJPA简介 (08:16)
6-2 [SpringDataJPA入门] SpringDataJPA和HibernateJPA的关系 (02:58)
6-3 [SpringDataJPA入门] 准备SpringDataJPA环境 (04:24)
6-4 [SpringDataJPA入门] 整合数据源 (09:30)
6-5 [SpringDataJPA入门] SpringDataJPA和Spring整合 (09:33)
6-6 [SpringDataJPA入门] SpringDataJPA的Dao层 (04:26)
6-7 [SpringDataJPA入门] SpringDataJPA测试 (11:15)
7-1 [SpringDataJPA的内部原理剖析] Spring Data JPA的常用接口分析 (02:26)
7-2 [SpringDataJPA的内部原理剖析] 关于SpringDataJPA的各种问题 (19:41)
7-3 [SpringDataJPA的内部原理剖析] SpringDataJPA的实现过程 (09:33)
8-1 [Repository子接口相关] Repository子接口相关概述 (04:00)
8-2 [Repository子接口相关] CrudRepository接口介绍 (02:12)
8-3 [Repository子接口相关] CrudRepository接口测试 (16:54)
8-4 [Repository子接口相关] PagingAndSortingRepository接口 (09:45)
8-5 [Repository子接口相关] 分页测试的方法 (18:33)
9-1 [SpringDataJPA查询方式] 存在的小问题 (07:24)
9-2 [SpringDataJPA查询方式] JpaRepository接口介绍 (05:13)
9-3 [SpringDataJPA查询方式] JPAReponository测试 (10:31)
9-4 [SpringDataJPA查询方式] JpaSpecificationExecutor接口 (07:10)
9-5 [SpringDataJPA查询方式] JpaSpecificationExecutor测试 (13:56)
9-6 [SpringDataJPA查询方式] SpringDataJPA的查询方式 (17:01)
9-7 [SpringDataJPA查询方式] 方法解析流程 (10:32)
9-8 [SpringDataJPA查询方式] 使用Query注解自定义JPQL查询 (03:51)
9-9 [SpringDataJPA查询方式] 按照位置和名字传递参数 (02:54)
9-10 [SpringDataJPA查询方式] @Modifying注解 (12:52)
10-1 [SpringDataJPA一对多关联] 表之间关系的划分 (05:14)
10-2 [SpringDataJPA一对多关联] 在JPA框架中表关系的分析步骤 (02:43)
10-3 [SpringDataJPA一对多关联] 一对多表的分析 (05:46)
10-4 [SpringDataJPA一对多关联] 配置一对多的环境 (12:08)
10-5 [SpringDataJPA一对多关联] 配置一对多的关联关系 (08:38)
10-6 [SpringDataJPA一对多关联] 配置双向关联 (05:13)
10-7 [SpringDataJPA一对多关联] 测试一对多和多对一 (08:45)
10-8 [SpringDataJPA一对多关联] 级联新增 (12:49)
10-9 [SpringDataJPA一对多关联] 级联新增出现的问题 (06:59)
10-10 [SpringDataJPA一对多关联] 级联删除测试 (11:37)
11-1 [SpringDataJPA多对多关联] 项目中的问题 (10:37)
11-2 [SpringDataJPA多对多关联] 多对多关系分析 (02:43)
11-3 [SpringDataJPA多对多关联] 准备多对多的环境 (07:43)
11-4 [SpringDataJPA多对多关联] 配置多对多关联 (11:42)
11-5 [SpringDataJPA多对多关联] 多对多级联新增 (12:42)
11-6 [SpringDataJPA多对多关联] 多对多级联删除 (06:25)
12-1 [SpringDataJPA一对一关联] 分析一对一表 (01:46)
12-2 [SpringDataJPA一对一关联] 准备一对一的环境 (07:07)
12-3 [SpringDataJPA一对一关联] 配置一对一关联 (13:20)
12-4 [SpringDataJPA一对一关联] 配置一对一的关联 (08:35)
13-1 [SSSP整合] SSSP整合概述 (02:03)
13-2 [SSSP整合] 创建Web项目 (02:17)
13-3 [SSSP整合] 导入依赖 (01:53)
13-4 [SSSP整合] 准备数据库属性文件 (48)
13-5 [SSSP整合] 新建applicationContext.xml (02:45)
13-6 [SSSP整合] 准备日志属性文件 (28)
13-7 [SSSP整合] 准备实体类 (01:18)
13-8 [SSSP整合] 准备Dao层 (01:01)
13-9 [SSSP整合] 准备业务逻辑层 (02:34)
13-10 [SSSP整合] 准备Controller层 (02:16)
13-11 [SSSP整合] 准备前端视图 (06:07)
13-12 [SSSP整合] SSSP框架测试 (09:29)