一. Spring Data JPA 概述
(一)什么是 Spring Data JPA
Spring Data JPA
是
Spring
基于
JPA
规范
的基础上封装的⼀套
JPA
应⽤框架,可使开发者⽤极简的代码即可实现对数据库的访问和操作。它提供了包括增删改查等在内的常⽤功能!学习并使⽤
Spring Data JPA
可以极⼤提⾼开发效率。
说明:
Spring Data JPA
极⼤简化了数据访问层代码。
如何简化呢?使⽤了
Spring Data JPA
,我们
Dao
层中只需要写接⼝,不需要写实现类,就⾃动具有了增删改查、分⻚查询等⽅法。
使⽤
Spring Data JPA
很多场景下不需要我们⾃⼰写
sql
语句
(二)Spring Data 家族
(三)Spring Data JPA,JPA规范和Hibernate之间的关系
Spring Data JPA
是
Spring
提供的⼀个封装了
JPA
操作的框架,⽽
JPA
仅仅是规范,单独使⽤规范⽆法具体做什么,那么
Spring Data JPA
、
JPA
规范 以及
Hibernate
(
JPA
规范的⼀种实现)之间的关系是什
么?
JPA
是⼀套规范,内部是由接⼝和抽象类组成的,
Hiberanate
是⼀套成熟的
ORM
框架,⽽且
Hiberanate
实现了
JPA
规范,所以可以称
Hiberanate
为
JPA
的⼀种实现⽅式,我们使⽤
JPA
的
API
编程,意味着站在更⾼的⻆度去看待问题(⾯向接⼝编程)。
Spring Data JPA
是
Spring
提供的⼀套对
JPA
操作更加⾼级的封装,是在
JPA
规范下的专⻔⽤来进⾏数据持久化的解决⽅案。
二. Spring Data JPA 应⽤
该小结的介绍主要看代码。
(一)需求:
使⽤
Spring Data JPA
完成对
tb_resume
表(简历表)的
Dao
层操作(增删改查,排序,
分⻚等)
(二)数据表设计
(三)SQL建表语句
SET NAMES utf8mb4;
SET FOREIGN_KEY_CHECKS = 0;
-- ----------------------------
-- Table structure for tb_resume
-- ----------------------------
DROP TABLE IF EXISTS `tb_resume`;
CREATE TABLE `tb_resume` (
`id` bigint(20) NOT NULL AUTO_INCREMENT,
`address` varchar(255) DEFAULT NULL,
`name` varchar(255) DEFAULT NULL,
`phone` varchar(255) DEFAULT NULL,
PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=4 DEFAULT CHARSET=utf8;
-- ----------------------------
-- Records of tb_resume
-- ----------------------------
BEGIN;
INSERT INTO `tb_resume` VALUES (1, '北京', '张三', '131000000');
INSERT INTO `tb_resume` VALUES (2, '上海', '李四', '151000000');
INSERT INTO `tb_resume` VALUES (3, '⼴州', '王五', '153000000');
COMMIT;
SET FOREIGN_KEY_CHECKS = 1;
(四)开发步骤
构建⼯程
创建⼯程导⼊坐标(
Java
框架于我们⽽⾔就是⼀堆
jar
)
配置
Spring
的配置⽂件(配置指定框架执⾏的细节)
编写实体类
Resume
,使⽤
JPA
注解配置映射关系
编写⼀个符合
Spring Data JPA
的
Dao
层接⼝(
ResumeDao
接⼝)
操作
ResumeDao
接⼝对象完成
Dao
层开发
(五)代码展示
三. Spring Data JPA 执⾏过程源码分析
(一)分析思路
resumeDao是⼀个代理对象,这个代理对象的类型是SimpleJapRepository,源码剖析的主要的过程,就是代理对象产⽣的过程。
(二)提出疑问
1. 这个代理对象是怎么产⽣,过程怎样?
2.这个代理对象类型SimpleJapRepository有什么特
别的?
(三)源码剖析