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:
(介绍内容:作为持久层框架的一些特点)
建立实体类与数据库表的联系
与SQL语句类似,将SQL语句表名+列名 ---》换成对象名+属性名
适用范围:查询的条件是非主属性时
addEntity(Users.class)是将数据库表和对象做映射
Query By Criteria
返回 Criteria对象,完成sql语句前半部分
调用add方法,对于后面的Restrictions进行定义
在注入的时候,需要通过注入工厂来实例化entityManager
区别:与Hibernate区别是CRUD的方法名发生变化
HQL
SQL
QBC
优势:大大降低持久层开发工作量,只需定义一个接口,extends JpaRepository,就可以直接使用其中的CRUD
ps:一般使用接口时,继承JpaRepository和JpaSpecificationExecutor 接口
通过方法名称命名规则查询(findBy+大写属性名)
基于@Query注解的查询{JPQL、SQL}(JPQL类似HQL语句,方法命名没有规范)
上图中的nativeQuery:为true,代表当前所写的sql语句为标准的,直接在数据库中能进行查询的;为false则是针对JPQL不规范类型的SQL进行转义——》转变成可以正常执行的SQL语句
上图为基于@Query的更新操作,需要添加@Modifying
直接使用方法即可,底层已经封装好了,依据底层来传递参数
排序 查询
单条件排序
多条件排序
是开发时用的最多的接口:能将其它方法的返回结果做适配处理
多条件查询和分页与排序
单条件查询
findAll()方法参数类型为:Specification类型,则定义内部类实现条件语句的定义{底层使用的是Hibernate Jpa}
多条件查询
方式一:使用List数组方式
方式二:直接放多个参数
分页查询
排序查询
分页+排序
将排序整合到分页的PageRequest()的参数中
创建一个UsersDaoImpl实现类
UsersDaoImpl实现UserRepository接口,UsersDao继承UsersRepository
创建一对一关系:
将此关系插入表时,需要在Users中的属性roles添加@OneToOne(cascade=CascadeType.RERSIST),做一个级联操作
无非就是针对于哪一个对象,从而辨别并设置(几对几关系)
menus和roles之间的多对多关系
原文:https://www.cnblogs.com/happy-prince/p/14589841.html