【Spring Data 系列学习】了解 Spring Data JPA 、 Jpa 和 Hibernate
在开始学习 Spring Data JPA 之前,首先讨论下 Spring Data Jpa、JPA 和 Hibernate 之前的关系。
JPA
JPA 是 Java Persistence API 的简称,中文名 Java 持久层 API,是 JDK 5.0 注解或 XML 描述对象-关系表的映射关系,并将运行期的实体对象持久化到数据库中。
Sun 引入新的 JPA ORM 规范出于两个原因:其一,简化现有 Java EE 和 Java SE 应用开发工作;其二,Sun 希望整合 ORM 技术,实现天下归一。
JPA 由 EJB 3.0 软件专家组开发,作为 JSR-220 实现的一部分。但它又不限于 EJB 3.0,你可以在 Web 应用、甚至桌面应用中使用。JPA 的宗旨是为 POJO 提供持久化标准规范,由此可见,经过这几年的实践探索,能够脱离容器独立运行,方便开发和测试的理念已经深入人心了。Hibernate 3.2+ 、TopLink 10.1.3以及 OpenJPA 都提供了 JPA 的实现。
JPA 的总体思想和现有 Hibernate、TopLink、JDO 等 ORM 框架大体一致。总的来说,JPA 包括以下 3 方面的技术:
ORM映射元数据 : JPA 支持 XML 和 JDK 5.0 注解两种元数据的形式,元数据描述对象和表之间的映射关系,框架据此将实体对象持久化到数据库表中
API:用来操作实体对象,执行 CRUD 操作,框架在后台替代我们完成所有的事情,开发者从繁琐的 JDBC 和SQL代码中解脱出来。
查询语言: 这是持久化操作中很重要的一个方面,通过面向对象而非面向数据库的查询语言查询数据,避免程序的SQL 语句紧密耦合。
Hibernate
Hibernate 是一个开放源代码的对象关系映射框架,对 JDBC 进行了非常轻量级的对象封装,使得 Java 程序员可以随心所欲地使用对象编程思维来操纵数据库,并且对象有自己的生命周期,着力对象与对象之间的关系,有自己的HQL 查询语言,所以数据库移植性很好。Hibernate是完备的 ORM 框架,是符合 JPA 规范的。Hibernate 有自己的缓存机制。从上手的角度来说比较难,比较适合企业级的应用系统开发。
JPA和Hibernate的关系?
1.JPA 是 hibernate 的一个抽象。
JPA 是规范:JPA 本质上就是一种 ORM 规范,不是 ORM 框架 —— 因为 JPA 并未提供 ORM 实现他只是制定了一些规范,提供了一些编程的 API 接口,但具体实现则由 ORM 厂商提供实现 。
Hibernate 是实现:Hibernate 除了作为 ORM 框架之外,它也是一种 JPA 实现。
2.从功能上来说,JPA 是 Hibernate 功能的一个子集。
Spring Data JPA
可以理解为 JPA 规范的再次封装抽象,底层还是使用了Hibernate 的 JPA 技术实现,引用 JPQL(Java Persistence Query Language)查询语言,属于Spring整个生态体系的一部分。随着Spring Boot和Spring Cloud 在市场上的流行,Spring Data JPA也逐渐进入大家的视野,它们组成有机的整体,使用起来比较方便,加快了开发的效率,使开发者不需要关心和配置更多的东西,完全可以沉浸在Spring 的完整生态标准实现下。JPA上手简单,开发效率高,对对象的支持比较好,又有很大的灵活性,市场的认可度越来越高。
Spring Data JPA和JPA的关系?
Spring Data JPA 是在 JPA 规范的基础下提供了 Repository 层的实现,但是使用哪一款 ORM 需要你自己去决定;相比我们更为熟悉的 Hibernate 和 MyBatis, Spring Data JPA 可以看做更高层次的抽象。 Spring 在做持久化这一块的工作,开发了 Spring-data-xxx 这一系列包,如: Spring Data JPA, Spring Data Redis, Spring Data Mongodb 等等,这些都是 Spring 提供的基于 JPA 和其他一些 NOSQL 的 Repository。
文章参考:
Spring Data JPA 从入门到精通书籍
https://spring.io/projects/spring-data
https://www.oschina.net/p/spring-data
https://www.ibm.com/developerworks/cn/opensource/os-cn-spring-jpa/
【Spring Data 系列学习】了解 Spring Data JPA 、 Jpa 和 Hibernate的更多相关文章
- 【Spring Data 系列学习】Spring Data JPA 基础查询
[Spring Data 系列学习]Spring Data JPA 基础查询 前面的章节简单讲解了 了解 Spring Data JPA . Jpa 和 Hibernate,本章节开始通过案例上手 S ...
- 【Spring Data 系列学习】Spring Data JPA @Query 注解查询
[Spring Data 系列学习]Spring Data JPA @Query 注解查询 前面的章节讲述了 Spring Data Jpa 通过声明式对数据库进行操作,上手速度快简单易操作.但同时 ...
- 【Spring Data 系列学习】Spring Data JPA 自定义查询,分页,排序,条件查询
Spring Boot Jpa 默认提供 CURD 的方法等方法,在日常中往往时无法满足我们业务的要求,本章节通过自定义简单查询案例进行讲解. 快速上手 项目中的pom.xml.application ...
- 【spring boot 系列】spring data jpa 全面解析(实践 + 源码分析)
前言 本文将从示例.原理.应用3个方面介绍spring data jpa. 以下分析基于spring boot 2.0 + spring 5.0.4版本源码 概述 JPA是什么? JPA (Java ...
- spring boot(十五)spring boot+thymeleaf+jpa增删改查示例
快速上手 配置文件 pom包配置 pom包里面添加jpa和thymeleaf的相关包引用 <dependency> <groupId>org.springframework.b ...
- Spring Boot 2.X 如何快速整合jpa?
本文目录 一.JPA介绍二.Spring Data JPA类结构图1.类的结构关系图三.代码实现1.添加对应的Starter2.添加连接数据库的配置3.主要代码 一.JPA介绍 JPA是Java Pe ...
- Spring Boot结和Spring Data(Ehcache缓存,Thymeleaf页面,自定义异常页面跳转,Swagger2)
项目结构 pom文件 <?xml version="1.0" encoding="UTF-8"?> <project xmlns=" ...
- Spring注入JPA+JPA事务管理
本例实现的是Spring注入JPA 和 使用JPA事务管理.JPA是sun公司开发的一项新的规范标准.在本质上来说,JPA可以看作是Hibernate的一个子集:然而从功能上来说,Hibernate是 ...
- Spring MVC集成Spring Data Reids和Spring Session实现Session共享
说明:Spring MVC中集成Spring Data Redis和Spring Session时版本是一个坑点,比如最新版本的Spring Data Redis已经不包含Jedis了,需要自行引入. ...
随机推荐
- iOS 自定义只有年月的DatePikerView
头文件: @interface YearMonthPikerView : UIView @property (nonatomic,copy) void(^cancelBlock)(); @proper ...
- 52)PHP,加了单例模式的数据库代码
<?php class db { public $host ;//= "localhost";//定义默认连接方式 public $User;//= "root&q ...
- php中的几种四舍五入取整、向上取整、向下取整、小数截取方法
echo intval(4.5);echo "<br />";//直接取整,舍弃小数保留整数echo round(4.5);echo "<br /> ...
- 006.前端开发知识,前端基础CSS(2020-01-21)
来源:第五天 01盒子水平居中 一.盒子中文字控制: 1.text-align: center; /*可以让盒子内容(文字 行内元素 行内块元素)居中对齐*/ 二.让盒子水平居中对齐: 方法1.ma ...
- 在SpringBoot中使用Junit测试
一:加入依赖 <dependency> <groupId>junit</groupId> <artifactId>junit</artifactI ...
- Java逆向工程(数据库表生成java类)
说起来倒是挺简单的,就是听着名字感觉挺高大上.逆向工程方式有很多,比如mybatis就提供了一个这样的工具mybatis-genderator,这个我反正是没用过只是听说过,以前在公司都是用公司写好的 ...
- php 二维码
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/ ...
- 59)PHP,管理员表中所存在的项
用户ID 用户名 用户密码 用户权限(就是他的角色等级,比如是1级 2级, 三级等等) 上次登录的IP 上次登录的时间
- LabVIEW部分视觉函数中文解说
IMAQ Learn Pattern 2 VI 在匹配阶段创建您要搜索的图案匹配的模板图像的描述,此描述的数据被附加到输入模板图像中.在匹配阶段,从模板图像中提取模板描述符并且用于从检查图像中搜索模板 ...
- 康耐视软件VisionPro-max-u与VisionPro-plus-u的区别
康耐视软件VisionPro-max-u与VisionPro-plus-u的区别 1.VisionPro-plus-u为基础版可以直接运用该软件包的算法,拖拽式的窗口程序 2.VisionPro-ma ...