Spring Data JPA 大纲归纳

第一天:

 1 springdatajpa
 2     day1:orm思想和hibernate以及jpa的概述和jpa的基本操作
 3     day2:springdatajpa的运行原理以及基本操作
 4     day3:多表操作,复杂查询
 5 
 6 第一 orm思想
 7     主要目的:操作实体类就相当于操作数据库表
 8     建立两个映射关系:
 9         实体类和表的映射关系
10         实体类中属性和表中字段的映射关系
11     不再重点关注:sql语句
12     
13     实现了ORM思想的框架:mybatis,hibernate
14 
15 第二 hibernate框架介绍
16     Hibernate是一个开放源代码的对象关系映射框架,
17         它对JDBC进行了非常轻量级的对象封装,
18         它将POJO与数据库表建立映射关系,是一个全自动的orm框架
19 
20 第三 JPA规范
21     jpa规范,实现jpa规范,内部是由接口和抽象类组成
22 
23 第四 jpa的基本操作
24     案例:是客户的相关操作(增删改查)
25         客户:就是一家公司
26     客户表:
27     
28     jpa操作的操作步骤
29         1.加载配置文件创建实体管理器工厂
30             Persisitence:静态方法(根据持久化单元名称创建实体管理器工厂)
31                 createEntityMnagerFactory(持久化单元名称)
32             作用:创建实体管理器工厂
33             
34         2.根据实体管理器工厂,创建实体管理器
35             EntityManagerFactory :获取EntityManager对象
36             方法:createEntityManager
37             * 内部维护的很多的内容
38                 内部维护了数据库信息,
39                 维护了缓存信息
40                 维护了所有的实体管理器对象
41                 再创建EntityManagerFactory的过程中会根据配置创建数据库表
42             * EntityManagerFactory的创建过程比较浪费资源
43             特点:线程安全的对象
44                 多个线程访问同一个EntityManagerFactory不会有线程安全问题
45             * 如何解决EntityManagerFactory的创建过程浪费资源(耗时)的问题?
46             思路:创建一个公共的EntityManagerFactory的对象
47             * 静态代码块的形式创建EntityManagerFactory
48             
49         3.创建事务对象,开启事务
50             EntityManager对象:实体类管理器
51                 beginTransaction : 创建事务对象
52                 presist : 保存
53                 merge  : 更新
54                 remove : 删除
55                 find/getRefrence : 根据id查询
56                 
57             Transaction 对象 : 事务
58                 begin:开启事务
59                 commit:提交事务
60                 rollback:回滚
61         4.增删改查操作
62         5.提交事务
63         6.释放资源
64     
65     i.搭建环境的过程
66         1.创建maven工程导入坐标
67         2.需要配置jpa的核心配置文件
68             *位置:配置到类路径下的一个叫做 META-INF 的文件夹下
69             *命名:persistence.xml
70         3.编写客户的实体类
71         4.配置实体类和表,类中属性和表中字段的映射关系
72         5.保存客户到数据库中
73     ii.完成基本CRUD案例
74         persist : 保存
75         merge : 更新
76         remove : 删除
77         find/getRefrence : 根据id查询
78         
79     iii.jpql查询
80         sql:查询的是表和表中的字段
81         jpql:查询的是实体类和类中的属性
82         * jpql和sql语句的语法相似
83         
84         1.查询全部
85         2.分页查询
86         3.统计查询
87         4.条件查询
88         5.排序

  回顾jdbc操作以及引入orm 

 

   jpa

第二天

 1 orm思想,hibernate,JPA的相关操作
 2     
 3 * SpringDataJpa
 4 
 5 第一 springDataJpa的概述
 6 
 7 第二 springDataJpa的入门操作
 8     案例:客户的基本CRUD
 9     i.搭建环境
10         创建工程导入坐标
11         配置spring的配置文件(配置spring Data jpa的整合)
12         编写实体类(Customer),使用jpa注解配置映射关系
13     ii.编写一个符合springDataJpa的dao层接口
14         * 只需要编写dao层接口,不需要编写dao层接口的实现类
15         * dao层接口规范
16             1.需要继承两个接口(JpaRepository,JpaSpecificationExecutor)
17             2.需要提供响应的泛型
18     
19     * 
20         findOne(id) :根据id查询
21         save(customer):保存或者更新(依据:传递的实体类对象中,是否包含id属性)
22         delete(id) :根据id删除
23         findAll() : 查询全部
24 
25 第三 springDataJpa的运行过程和原理剖析
26     1.通过JdkDynamicAopProxy的invoke方法创建了一个动态代理对象
27     2.SimpleJpaRepository当中封装了JPA的操作(借助JPA的api完成数据库的CRUD)
28     3.通过hibernate完成数据库操作(封装了jdbc)
29 
30 
31 第四 复杂查询
32     i.借助接口中的定义好的方法完成查询
33         findOne(id):根据id查询
34     ii.jpql的查询方式
35         jpql : jpa query language  (jpq查询语言)
36         特点:语法或关键字和sql语句类似
37             查询的是类和类中的属性
38             
39         * 需要将JPQL语句配置到接口方法上
40             1.特有的查询:需要在dao接口上配置方法
41             2.在新添加的方法上,使用注解的形式配置jpql查询语句
42             3.注解 : @Query
43 
44     iii.sql语句的查询
45             1.特有的查询:需要在dao接口上配置方法
46             2.在新添加的方法上,使用注解的形式配置sql查询语句
47             3.注解 : @Query
48                 value :jpql语句 | sql语句
49                 nativeQuery :false(使用jpql查询) | true(使用本地查询:sql查询)
50                     是否使用本地查询
51                     
52     iiii.方法名称规则查询

  springDataJpa,jpa,hibernate关系

 

   动态分析

 

  springdatajpa的运行过程

第三天

  1 回顾
  2     i.springDatajpa,jpa规范,hibernate三者之间的关系
  3         code  -- > springDatajpa  --> jpa规范的API --> hibernate
  4     ii.符合springDataJpa规范的dao层接口的编写规则
  5         1.需要实现两个接口(JpaRepository,JapSpecificationExecutor)
  6         2.提供响应的泛型
  7     iii.运行过程
  8         * 动态代理的方式:动态代理对象
  9     iiii.查询
 10 
 11 第一 Specifications动态查询
 12 
 13     JpaSpecificationExecutor 方法列表
 14     
 15         T findOne(Specification<T> spec);  //查询单个对象
 16 
 17         List<T> findAll(Specification<T> spec);  //查询列表
 18 
 19         //查询全部,分页
 20         //pageable:分页参数
 21         //返回值:分页pageBean(page:是springdatajpa提供的)
 22         Page<T> findAll(Specification<T> spec, Pageable pageable);
 23 
 24         //查询列表
 25         //Sort:排序参数
 26         List<T> findAll(Specification<T> spec, Sort sort);
 27 
 28         long count(Specification<T> spec);//统计查询
 29         
 30     * Specification :查询条件
 31         自定义我们自己的Specification实现类
 32             实现
 33                 //root:查询的根对象(查询的任何属性都可以从根对象中获取)
 34                 //CriteriaQuery:顶层查询对象,自定义查询方式(了解:一般不用)
 35                 //CriteriaBuilder:查询的构造器,封装了很多的查询条件
 36                 Predicate toPredicate(Root<T> root, CriteriaQuery<?> query, CriteriaBuilder cb); //封装查询条件
 37         
 38 第二 多表之间的关系和操作多表的操作步骤
 39 
 40     表关系
 41         一对一
 42         一对多:
 43             一的一方:主表
 44             多的一方:从表
 45             外键:需要再从表上新建一列作为外键,他的取值来源于主表的主键
 46         多对多:
 47             中间表:中间表中最少应该由两个字段组成,这两个字段做为外键指向两张表的主键,又组成了联合主键
 48 
 49     讲师对学员:一对多关系
 50             
 51     实体类中的关系
 52         包含关系:可以通过实体类中的包含关系描述表关系
 53         继承关系
 54     
 55     分析步骤
 56         1.明确表关系
 57         2.确定表关系(描述 外键|中间表)
 58         3.编写实体类,再实体类中描述表关系(包含关系)
 59         4.配置映射关系
 60 
 61 第三 完成多表操作
 62 
 63     i.一对多操作
 64         案例:客户和联系人的案例(一对多关系)
 65             客户:一家公司
 66             联系人:这家公司的员工
 67         
 68             一个客户可以具有多个联系人
 69             一个联系人从属于一家公司
 70             
 71         分析步骤
 72             1.明确表关系
 73                 一对多关系
 74             2.确定表关系(描述 外键|中间表)
 75                 主表:客户表
 76                 从表:联系人表
 77                     * 再从表上添加外键
 78             3.编写实体类,再实体类中描述表关系(包含关系)
 79                 客户:再客户的实体类中包含一个联系人的集合
 80                 联系人:在联系人的实体类中包含一个客户的对象
 81             4.配置映射关系
 82                 * 使用jpa注解配置一对多映射关系
 83     
 84         级联:
 85             操作一个对象的同时操作他的关联对象
 86             
 87             级联操作:
 88                 1.需要区分操作主体
 89                 2.需要在操作主体的实体类上,添加级联属性(需要添加到多表映射关系的注解上)
 90                 3.cascade(配置级联)
 91             
 92             级联添加,
 93                 案例:当我保存一个客户的同时保存联系人
 94             级联删除
 95                 案例:当我删除一个客户的同时删除此客户的所有联系人
 96                 
 97     ii.多对多操作
 98         案例:用户和角色(多对多关系)
 99             用户:
100             角色:
101     
102         分析步骤
103             1.明确表关系
104                 多对多关系
105             2.确定表关系(描述 外键|中间表)
106                 中间间表
107             3.编写实体类,再实体类中描述表关系(包含关系)
108                 用户:包含角色的集合
109                 角色:包含用户的集合
110             4.配置映射关系
111             
112     iii.多表的查询
113         1.对象导航查询
114             查询一个对象的同时,通过此对象查询他的关联对象
115             
116             案例:客户和联系人
117             
118             从一方查询多方
119                 * 默认:使用延迟加载(****)
120                 
121             从多方查询一方
122                 * 默认:使用立即加载

 

posted @ 2019-09-29 10:23  清晨的第一抹阳光  阅读(223)  评论(0编辑  收藏  举报