SpringData JPA 框架入门使用

1.SpringData JPA的介绍

可以理解为JPA规范的再次封装抽象,底层还是使用了Hibernate
的JPA技术实现,引用JPQL(Java Persistence Query Language)查
询语言,属于Spring整个生态体系的一部分。随着Spring Boot和
Spring Cloud在市场上的流行,Spring Data JPA也逐渐进入大家的
视野,它们组成有机的整体,使用起来比较方便,加快了开发的效
率,使开发者不需要关心和配置更多的东西,完全可以沉浸在Spring
的完整生态标准实现下。JPA上手简单,开发效率高,对对象的支持
比较好,又有很大的灵活性,市场的认可度越来越高。

JPA是Java Persistence API的简称,中文名为Java持久层API,
是JDK 5.0注解或XML描述对象-关系表的映射关系,并将运行期的实
体对象持久化到数据库中。
Sun引入新的JPA ORM规范出于两个原因:其一,简化现有Java
EE和Java SE应用开发工作;其二,Sun希望整合ORM技术,实现天下
归一。
JPA包括以下3方面的内容:
(1)一套API标准。在javax.persistence的包下面,用来操作
实体对象,执行CRUD操作,框架在后台替代我们完成所有的事情,开
发者从烦琐的JDBC和SQL代码中解脱出来。
(2)面向对象的查询语言:Java Persistence Query
Language(JPQL)。这是持久化操作中很重要的一个方面,通过面向
对象而非面向数据库的查询语言查询数据,避免程序的SQL语句紧密
耦合。
(3)ORM(object/relational metadata)元数据的映射。JPA
支持XML和JDK5.0注解两种元数据的形式,元数据描述对象和表之间
的映射关系,框架据此将实体对象持久化到数据库表中。

主要子项目(Main modules)如下:

Spring Data Commons
Spring Data Gemfire
Spring Data JPA
Spring Data KeyValue
Spring Data LDAP
Spring Data MongoDB
Spring Data REST
Spring Data Redis
Spring Data for Apache Cassandra
Spring Data for Apache Solr

2.开发实战

1.创建一个数据的新用户并附上权限:

在这里插入图片描述

2.创建一个表:

在这里插入图片描述

3.利用IntelliJ IDEA创建Example1

在这里插入图片描述

4.修改配置文件

在这里插入图片描述

5.java实体类

在这里插入图片描述

6.dao

创建一个Repository。文件为
src/main/java/example/example1/UserRepository.java。
在这里插入图片描述

7.contoller

创建一个Controller
在这里插入图片描述

8.直接运行Example1Application的main函数。打开Example1Application,内容如下

在这里插入图片描述

3.详解

1.主要架构

在这里插入图片描述

2.层次关系

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

3.实例

在这里插入图片描述

4.接口

1.CrudRepository interface内容

在这里插入图片描述

在这里插入图片描述
在这里插入图片描述

使用示例

在这里插入图片描述
在这里插入图片描述

PagingAndSortingRepository方法详解

通过类的关系图,我们可以看到PagingAndSortingRepository继承CrudRepository所有的基本方法,它增加了分页和排序等对查询结果进行限制的基本的、常用的、通用的一些分页方法。
在这里插入图片描述
(1) 根据排序取所有对象的集合。
(2) 根据分页和排序进行查询,并用Page对象封装。Pageable
对象包含分页和Sort对象。
PagingAndSortingRepository和CrudRepository都是Spring Data Common的标准接口,如果我们采用JPA,那它对应的实现类就是Spring Data JPA的model里面的SimpleJpaRepository。如果是其他NoSQL的实现Mongodb,那它的实现就在Spring Data Mongodb的model里面。
在这里插入图片描述
通过上面的源码我们可以发现这些查询都会用到后面章节要讲的Specification查询方法。

PagingAndSortingRepository使用示例

只需要继承PagingAndSortingRepository的接口即可,其他不用做任何改动。UserPagingAndSortingRepository修改如下:
在这里插入图片描述
在这里插入图片描述

2.JpaRepository接口

JpaRepository到这里可以进入分水岭了,上面的那些都是Spring Data为了兼容NoSQL而进行的一些抽象封装,从JpaRepository开始是对关系型数据库进行抽象封装。从类图可以看得出来它继承了PagingAndSortingRepository类,也就继承了其所有方法,并且实现类也是SimpleJpaRepository。从类图上还可以看出JpaRepository继承和拥有了QueryByExampleExecutor的相关方法
在这里插入图片描述
通过源码和CrudRepository相比较,它支持Query By Example,批量删除,提高删除效率,手动刷新数据库的更改方法,并将默认实现的查询结果变成了List。

使用方法

在这里插入图片描述

  • 1
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

coder阿龙

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值