zoukankan      html  css  js  c++  java
  • 畅游于SpringData的极速世界中

    SpringData

    • Hibernate:开发针对持久层的自动ORM(Oriented Relational Mapping) 框架

    • JPA:是一种规范(Java Persistent API)---{接口+文档}

    • Hibernate JPA: Hibernate在3.2后,根据JPA提供了一套操作持久层的API

    • Spring Data

    • Spring Data JPA:底层默认使用的是Hibernate来做的JPA实现

    • Spring Data Redis:

    一:Hibernate

    (介绍内容:作为持久层框架的一些特点)

    1.CRUD:

    • 建立实体类与数据库表的联系

      image-20210328094305892

      image-20210328094238346

    2.HQL语句

    • 与SQL语句类似,将SQL语句表名+列名 ---》换成对象名+属性名

    • 适用范围:查询的条件是非主属性时

    image-20210328100016559

    3.SQL语句

    image-20210328100442865

    addEntity(Users.class)是将数据库表对象做映射

    4.QBC语句

    Query By Criteria

    image-20210328101203337

    返回 Criteria对象,完成sql语句前半部分

    调用add方法,对于后面的Restrictions进行定义

    二:Hibernate JPA

    image-20210328103343391

    在注入的时候,需要通过注入工厂来实例化entityManager

    区别:与Hibernate区别是CRUD的方法名发生变化

    • HQL

      image-20210328104026323

      • 区别:无非就是在方法的命名上不一样了,简化了创建session对象
    • SQL

      image-20210328104434577

      • 区别:将sql语句和对象 放置到参数中,简化了
    • QBC

      image-20210328105230662

    三:Spring Data JPA

    优势:大大降低持久层开发工作量,只需定义一个接口,extends JpaRepository,就可以直接使用其中的CRUD

    image-20210328110945322

    1.原理:

    1.1接口继承结构(查看源码理关系)

    image-20210328153916993

    ps:一般使用接口时,继承JpaRepository和JpaSpecificationExecutor 接口

    1.2Spring Data Jpa的底层原理(还没理解)

    image-20210328154831274

    2.关于上述接口的具体应用

    2.1针对Repository接口的应用

    • 通过方法名称命名规则查询(findBy+大写属性名)

    • 基于@Query注解的查询{JPQL、SQL}(JPQL类似HQL语句,方法命名没有规范)

      image-20210328160721741

    image-20210328161157653

    上图中的nativeQuery:为true,代表当前所写的sql语句为标准的,直接在数据库中能进行查询的;为false则是针对JPQL不规范类型的SQL进行转义——》转变成可以正常执行的SQL语句

    image-20210328161755811

    上图为基于@Query的更新操作,需要添加@Modifying

    2.2针对CrudRepository接口的应用

    直接使用方法即可,底层已经封装好了,依据底层来传递参数

    2.3针对PagingAndSortingRepository接口的应用

    • 分页查询

    image-20210328163253773

    • 排序 查询

      • 单条件排序

        image-20210328164031530

      • 多条件排序

        image-20210328163942011

    2.4针对JpaRepository接口的应用

    是开发时用的最多的接口:能将其它方法的返回结果做适配处理

    2.5针对JpaSpecificationExecutor接口的应用

    多条件查询和分页与排序

    • 单条件查询

      image-20210328170613695

    findAll()方法参数类型为:Specification类型,则定义内部类实现条件语句的定义{底层使用的是Hibernate Jpa}

    • 多条件查询

      • 方式一:使用List数组方式

        image-20210328171501708

      • 方式二:直接放多个参数

        image-20210328171750210

    • 分页查询

      image-20210328172436512

    • 排序查询

      image-20210328182627547

    • 分页+排序

      image-20210328182833162

    将排序整合到分页的PageRequest()的参数中

    2.6创建自定义接口

    创建一个UsersDaoImpl实现类

    image-20210328183456643

    image-20210328183939348

    image-20210328183724661

    UsersDaoImpl实现UserRepository接口,UsersDao继承UsersRepository

    3.关联关系映射

    3.1一对一关系

    • 创建一对一关系:

      image-20210328194157233

    • 将此关系插入表时,需要在Users中的属性roles添加@OneToOne(cascade=CascadeType.RERSIST),做一个级联操作

    3.2一对多关系

    无非就是针对于哪一个对象,从而辨别并设置(几对几关系)

    image-20210328200344369

    image-20210328200713030

    3.3多对多关系

    menus和roles之间的多对多关系

    image-20210328200044437

  • 相关阅读:
    File类
    Java运算符
    JAVA语法
    数据库-子查询
    爬取笔趣阁_完本书籍
    爬取动物图片源码
    爬取电影天堂上最新电影的下载链接的源码
    pyinstaller的安装、使用、出错解决办法
    Emmet插件使用方法总结
    Markdown基本语法
  • 原文地址:https://www.cnblogs.com/happy-prince/p/14589841.html
Copyright © 2011-2022 走看看