什么是JPA

JPA(Java Persistence API)是Sun官方提出的Java持久化规范。它为Java开发人员提供了一种对象/关联映射工具来管理Java应用中的关系数据。它的出现主要是为了简化现有的持久化开发工作和整合ORM技术结束现在Hibernate、TopLink等ORM框架各自为营的局面。

ORM:通过使用描述对象和数据库之间映射的元数据,将程序中的对象自动持久化到关系数据库中。本质就是将数据从一种形式转换到另外一种形式。

JPA是在充分吸收了现有Hibernate、TopLink等ORM框架的基础上发展起来的,具有易于使用,伸缩性强等优点。

注意: JPA不是一种新的ORM框架,它的出现只是用于规范现有的ORM技术,它不能取代现有的Hibernate等ORM框架,相反,采用JPA开发时,我们仍将使用这些ORM框架,只是此时开发出来的应用不在依赖于某个持久化提供商。应用可以在不修改代码的情况下在任何JPA环境下运行,真正做到低耦合,可扩展的程序设计。类似于JDBC,在JDBC出现以前,我们的程序针对特性的数据库API进行编程,但是现在我们只需要针对JDBC API编程,这样能够在不改变代码的情况下就能换成其他的数据库。

JPA是一套规范,不是一套产品。Hibernate是一套产品,如果这些产品实现了JPA规范,那么我们可以叫它们为JPA的实现产品。使用JPA,就可以把我们的应用完全从Hibernate中解脱出来。

JPA规范与ORM框架的关系如下图:

JPA相关的技术

ORM映射元数据

JPA支持XML和JDK5.0注解两种元数据形式,元数据描述对象和表之间的映射关系,框架根据这个关系将实体对象持久化到数据库表中。

Java持久化API

用来操作实体对象,执行CRUD操作,框架在后台替我们完成所有的事情,开发者可以从繁琐的JDBC和SQL代码中解脱出来。

查询语言(JPQL)

这是持久化操作中很重要的一个方面,通过面向对象而非面向数据库的查询语言查询数据,避免程序的SQL语句紧密耦合。

什么是Spring-data-jpa

Spring Data JPA是Spring Data数据系列的一部分,使用它可以轻松实现基于JPA的基础库。 该模块对JPA的数据访问层进行了增强支持。 它使得Spring应用程序构建和使用数据访问技术变得更加容易。

Spring-data-jpa和JPA区别

Spring data jpa是在JPA规范下提供了Repository层的实现,但是使用哪一种ORM需要你来决定。虽然ORM框架都实现了JPA规范,但是在不同的ORM框架之间切换仍然需要编写不同的代码,而通过使用Spring data jpa能够方便大家在不同的ORM框架之间进行切换而不要更改代码。并且spring data jpa 对Repository层封装的很好,也省去了不少的麻烦。

实际使用

在实际的工程中,推荐采用Spring Data JPA + ORM(如:Hibernate)进行开发,这样在切换不同的ORM提供了方面,同时也使得Repository变得简单。程序低耦合。

spring-boot中使用

只需要在pom.xml中添加如下代码:

org.springframework.data spring-data-jpaorg.springframework.boot spring-boot-starter-data-jpa

spring data jpa从入门到精通_程序员笔记:Spring Data JPA入门相关推荐

  1. spring 处理带有特殊字符的请求_程序员笔记|常见的Spring异常分析及处理

    [技术沙龙002期]数据中台:宜信敏捷数据中台建设实践|宜信技术沙龙 将于5月23日晚8点线上直播,点击报名 一.前言 相信我们每个人在SpringMVC开发中,都遇到这样的问题:当我们的代码正常运行 ...

  2. python网络爬虫开发从入门到精通_《Python网络爬虫开发从入门到精通》(刘延林)【摘要 书评 试读】- 京东图书...

    权利声明: 京东上的所有商品信息.客户评价.商品咨询.网友讨论等内容,是京东重要的经营资源,未经许可,禁止非法转载使用. 注:本站商品信息均来自于合作方,其真实性.准确性和合法性由信息拥有者(合作方) ...

  3. eureka server配置_程序员笔记|详解Eureka 缓存机制

    引言 Eureka是Netflix开源的.用于实现服务注册和发现的服务.Spring Cloud Eureka基于Eureka进行二次封装,增加了更人性化的UI,使用更为方便.但是由于Eureka本身 ...

  4. oracle 会话数上不去_程序员笔记|全面解析Oracle等待事件的分类、发现及优化

    一.等待事件由来 大家可能有些奇怪,为什么说等待事件,先谈到了指标体系.其实,正是因为指标体系的发展,才导致等待事件的引入.总结一下,Oracle的指标体系,大致经历了下面三个阶段: 以命中率为主要参 ...

  5. java 代码重用需要注意的事项_程序员笔记|编写高性能的Java代码需要注意的4个问题...

    一.并发 无法创建新的本机线程...... 问题1:Java的中创建一个线程消耗多少内存? 每个线程有独自的栈内存,共享堆内存 问题2:一台机器可以创建多少线程? CPU,内存,操作系统,JVM,应用 ...

  6. SpringBoot入门到精通_第6篇 _必知必会

    接上一篇:SpringBoot入门到精通_第5篇 _SpringBoot Actuator监控 https://blog.csdn.net/weixin_40816738/article/detail ...

  7. SpringBoot入门到精通_第4篇 _开发三板斧

    接上一篇:SpringBoot入门到精通_第3篇 _应用组件分析 https://blog.csdn.net/weixin_40816738/article/details/101096218 文章目 ...

  8. SpringBoot入门到精通_第2篇 _1分钟实战需求项目

    接上一篇:SpringBoot入门到精通_第1篇 _核心概念 https://blog.csdn.net/weixin_40816738/article/details/94916051 文章目录 一 ...

  9. SpringBoot入门到精通_第1篇 _核心概念

    SpringBoot 必知必会 核心精粹 文章目录 一.SpringBoot必知必会 1. 是什么?能做什么? 2. 有哪些特性? 一.SpringBoot必知必会 1. 是什么?能做什么? 是什么? ...

最新文章

  1. python渐变颜色表_python – 具有固定颜色渐变的np.histogram2D
  2. IE兼容问题IE6,IE7,IE8,IE9,IE10
  3. C语言圈排序Cycle Sort算法(附完整源码)
  4. idea修改新的git提交地址
  5. [小笔记]TypeScript/JavaScript模拟Python中的Range函数
  6. C++网络编程实例2(socket)
  7. Lua 函数参数 默认实参
  8. layui树形表格treetable
  9. 树莓派 无法定位软件包 解决方案
  10. 47001 data format error hint -- 解析 JSON/XML 内容错误
  11. Minimum supported Gradle version is 5.1.1. Current version is 4.8
  12. 知网文献免费下载方法
  13. No module named 'pandas.lib'
  14. py2下hbase的字符串编码问题(\\xe7\\xbc\\x96)
  15. web 页面乱码的解决办法
  16. ISIS(中间系统到中间系统)及其配置
  17. docker镜像批量导入、导出
  18. [Codeup 25481] swan
  19. 接口(1):抽象类和抽象方法、接口
  20. 如何提高CRM的采用率?

热门文章

  1. Excel 2016新增函数之IFS
  2. c++ 走向高级之日积月累
  3. route 更改网络设置
  4. 【LaTeX】Lyx/LaTeX笔记01
  5. NET多线程探索-线程同步和通信
  6. Android 2.3 r1 中文 API (57) —— ScaleGestureDetector
  7. 详解HelloWorldBasic实例
  8. ZZULIOJ 1127: 矩阵乘积
  9. linux中GIT组件,linux – 使用git和符号链接的基于组件的Web项目目录布局
  10. 信息学奥赛一本通(1222:放苹果)