第一天:

 springdatajpa
day1:orm思想和hibernate以及jpa的概述和jpa的基本操作
day2:springdatajpa的运行原理以及基本操作
day3:多表操作,复杂查询 第一 orm思想
主要目的:操作实体类就相当于操作数据库表
建立两个映射关系:
实体类和表的映射关系
实体类中属性和表中字段的映射关系
不再重点关注:sql语句 实现了ORM思想的框架:mybatis,hibernate 第二 hibernate框架介绍
Hibernate是一个开放源代码的对象关系映射框架,
它对JDBC进行了非常轻量级的对象封装,
它将POJO与数据库表建立映射关系,是一个全自动的orm框架 第三 JPA规范
jpa规范,实现jpa规范,内部是由接口和抽象类组成 第四 jpa的基本操作
案例:是客户的相关操作(增删改查)
客户:就是一家公司
客户表: jpa操作的操作步骤
1.加载配置文件创建实体管理器工厂
Persisitence:静态方法(根据持久化单元名称创建实体管理器工厂)
createEntityMnagerFactory(持久化单元名称)
作用:创建实体管理器工厂 2.根据实体管理器工厂,创建实体管理器
EntityManagerFactory :获取EntityManager对象
方法:createEntityManager
* 内部维护的很多的内容
内部维护了数据库信息,
维护了缓存信息
维护了所有的实体管理器对象
再创建EntityManagerFactory的过程中会根据配置创建数据库表
* EntityManagerFactory的创建过程比较浪费资源
特点:线程安全的对象
多个线程访问同一个EntityManagerFactory不会有线程安全问题
* 如何解决EntityManagerFactory的创建过程浪费资源(耗时)的问题?
思路:创建一个公共的EntityManagerFactory的对象
* 静态代码块的形式创建EntityManagerFactory 3.创建事务对象,开启事务
EntityManager对象:实体类管理器
beginTransaction : 创建事务对象
presist : 保存
merge : 更新
remove : 删除
find/getRefrence : 根据id查询 Transaction 对象 : 事务
begin:开启事务
commit:提交事务
rollback:回滚
4.增删改查操作
5.提交事务
6.释放资源 i.搭建环境的过程
1.创建maven工程导入坐标
2.需要配置jpa的核心配置文件
*位置:配置到类路径下的一个叫做 META-INF 的文件夹下
*命名:persistence.xml
3.编写客户的实体类
4.配置实体类和表,类中属性和表中字段的映射关系
5.保存客户到数据库中
ii.完成基本CRUD案例
persist : 保存
merge : 更新
remove : 删除
find/getRefrence : 根据id查询 iii.jpql查询
sql:查询的是表和表中的字段
jpql:查询的是实体类和类中的属性
* jpql和sql语句的语法相似 1.查询全部
2.分页查询
3.统计查询
4.条件查询
5.排序

  回顾jdbc操作以及引入orm

  jpa

第二天

 orm思想,hibernate,JPA的相关操作

 * SpringDataJpa

 第一 springDataJpa的概述

 第二 springDataJpa的入门操作
案例:客户的基本CRUD
i.搭建环境
创建工程导入坐标
配置spring的配置文件(配置spring Data jpa的整合)
编写实体类(Customer),使用jpa注解配置映射关系
ii.编写一个符合springDataJpa的dao层接口
* 只需要编写dao层接口,不需要编写dao层接口的实现类
* dao层接口规范
1.需要继承两个接口(JpaRepository,JpaSpecificationExecutor)
2.需要提供响应的泛型 *
findOne(id) :根据id查询
save(customer):保存或者更新(依据:传递的实体类对象中,是否包含id属性)
delete(id) :根据id删除
findAll() : 查询全部 第三 springDataJpa的运行过程和原理剖析
1.通过JdkDynamicAopProxy的invoke方法创建了一个动态代理对象
2.SimpleJpaRepository当中封装了JPA的操作(借助JPA的api完成数据库的CRUD)
3.通过hibernate完成数据库操作(封装了jdbc) 第四 复杂查询
i.借助接口中的定义好的方法完成查询
findOne(id):根据id查询
ii.jpql的查询方式
jpql : jpa query language (jpq查询语言)
特点:语法或关键字和sql语句类似
查询的是类和类中的属性 * 需要将JPQL语句配置到接口方法上
1.特有的查询:需要在dao接口上配置方法
2.在新添加的方法上,使用注解的形式配置jpql查询语句
3.注解 : @Query iii.sql语句的查询
1.特有的查询:需要在dao接口上配置方法
2.在新添加的方法上,使用注解的形式配置sql查询语句
3.注解 : @Query
value :jpql语句 | sql语句
nativeQuery :false(使用jpql查询) | true(使用本地查询:sql查询)
是否使用本地查询 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 * 默认:使用立即加载

Spring Data JPA 大纲归纳的更多相关文章

  1. Spring Boot2 系列教程(二十三)理解 Spring Data Jpa

    有很多读者留言希望松哥能好好聊聊 Spring Data Jpa! 其实这个话题松哥以前零零散散的介绍过,在我的书里也有介绍过,但是在公众号中还没和大伙聊过,因此本文就和大家来仔细聊聊 Spring ...

  2. 快速搭建springmvc+spring data jpa工程

    一.前言 这里简单讲述一下如何快速使用springmvc和spring data jpa搭建后台开发工程,并提供了一个简单的demo作为参考. 二.创建maven工程 http://www.cnblo ...

  3. spring boot(五):spring data jpa的使用

    在上篇文章springboot(二):web综合开发中简单介绍了一下spring data jpa的基础性使用,这篇文章将更加全面的介绍spring data jpa 常见用法以及注意事项 使用spr ...

  4. 转:使用 Spring Data JPA 简化 JPA 开发

    从一个简单的 JPA 示例开始 本文主要讲述 Spring Data JPA,但是为了不至于给 JPA 和 Spring 的初学者造成较大的学习曲线,我们首先从 JPA 开始,简单介绍一个 JPA 示 ...

  5. 深入浅出学Spring Data JPA

    第一章:Spring Data JPA入门 Spring Data是什么 Spring Data是一个用于简化数据库访问,并支持云服务的开源框架.其主要目标是使得对数据的访问变得方便快捷,并支持map ...

  6. spring data jpa 调用存储过程

    网上这方面的例子不是很多,研究了一下,列出几个调用的方法. 假如我们有一个mysql的存储过程 CREATE DEFINER=`root`@`localhost` PROCEDURE `plus1in ...

  7. Spring Data JPA 学习记录1 -- 单向1:N关联的一些问题

    开新坑 开新坑了(笑)....公司项目使用的是Spring Data JPA做持久化框架....学习了一段时间以后发现了一点值得注意的小问题.....与大家分享 主要是针对1:N单向关联产生的一系列问 ...

  8. Spring Boot with Spring Data JPA (1) - Concept

    What's Spring Data JPA? According to Pivotal, Spring Data JPA, part of the larger Spring Data family ...

  9. 了解 Spring Data JPA

    前言 自 JPA 伴随 Java EE 5 发布以来,受到了各大厂商及开源社区的追捧,各种商用的和开源的 JPA 框架如雨后春笋般出现,为开发者提供了丰富的选择.它一改之前 EJB 2.x 中实体 B ...

随机推荐

  1. Vs code调试Dart语言

    1.下载Dart SDK,地址:Dart Windows下载 安装稳定版本,安装完看看有没有配置系统变量. 2.在VS code中安装Dart和Code Runner插件: 3.如果Dart有乱码输出 ...

  2. c# 线程异步处理

    public class AsyncHelper { private static readonly TaskFactory _myTaskFactory = new TaskFactory(Canc ...

  3. Entity Framework链接数据库设置

    本人不才,学习EntityFramwork同时做个记录供大家参考.不多说,直接上步骤 1.在WebConfig中添加如下代码段 <connectionStrings> <add na ...

  4. 【FICO系列】SAP FI验证故障排除(调试)

    公众号:SAP Technical 本文作者:matinal 原文出处:http://www.cnblogs.com/SAPmatinal/ 原文链接:[FICO系列]SAP FI验证故障排除(调试) ...

  5. 如何快速在Github找到你想要的东西

    众所周知 Github是全球最大的xx交友平台,虽然被收购了.但是不并没有什么影响. 使用Git可以做很多事,在这里不再缀述,上面的资源也是多种多样,应有尽有 对于这样一个平台,我们想快速找到自己需要 ...

  6. lnmp 命令 及其 TP5 部署遇到的一些问题

    1.添加站点域名命令: lnmp vhost add; 2.重置mysql密码: 第一种方法:用军哥的一键修改LNMP环境下MYSQL数据库密码脚本 一键脚本肯定是非常方便.具体执行以下命令: wge ...

  7. 《MIT 6.828 Lab 1 Exercise 4》实验报告

    本实验链接:mit 6.828 lab1 Exercise 4. 题目 Exercise 4. Read about programming with pointers in C. The best ...

  8. studio git创建与删除标签(Tag)

    代码托管平台 码云 git工具 Git git上的标签一般是用于标记版本, 当发布新版本后,便将该版本的代码打上Tag,用以区别及管理 使用标签前需要将代码提交到马云上 以上是提交git. 创建并提交 ...

  9. jdk1.8 -- 自定义FunctionInterface

    一.自定义函数的理解 对于java提供的一些函数,用lambda表达式是可以解决一些问题的,但是在对于一些比较复杂的数据类型在处理时,可能会有些力不从心了,但是 我们可以通过自定义的一些函数,通过使用 ...

  10. [转帖]redis监控工具汇总

    redis监控工具汇总 https://www.cnblogs.com/felixzh/p/11170143.html redis-stat redis-stat是一个比较有名的redis指标可视化的 ...