zoukankan      html  css  js  c++  java
  • 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                 * 默认:使用立即加载
  • 相关阅读:
    mac+chrome 最常用快捷键
    关于<form> autocomplete 属性
    MAC vim修改hosts文件
    git 使用详解(3)—— 最基本命令 + .gitignore 文件
    git 使用详解(2)——安装+配置+获取帮助
    vue动态生成组件
    slot插槽
    provide 和 inject高阶使用
    js正则验证表达式验证
    angular常用命令整理
  • 原文地址:https://www.cnblogs.com/116970u/p/11592871.html
Copyright © 2011-2022 走看看