Java持久化API

✍ dations ◷ 2025-11-26 15:29:37 #Java企业平台,Java规范请求,对象关系映射

Java 持久化 API (JPA)是一个 Java 应用程序接口 规范,描述了使用 Java标准版平台(Java SE) 和 Java企业版平台(Java EE)的应用中的 关系数据 的管理。

持久化,在这里包括三个层面的意思:

JPA 的 参考实现 是 EclipseLink。

2006年5月11号,JPA 1.0 规范作为 JCP JSR 220 的一部分最终被发布。JPA 2.0 规范,在2009年12月发布(Java EE 6 平台,依赖于 JPA 2.0。) JPA 2.1 规范,在2013年4月22日发布(Java EE 7 平台,依赖于 JPA 2.1。)

持久化实体是一个轻量级的 Java 类,其状态通常持久地保存到关系数据库的表中。 这种实体的实例对应于表中的各个行。 实体之间通常有关系,这些关系通过对象/关系元数据表示。 可以在实体类文件中直接使用注释来指定这种关系,也可以在随应用程序分发的单独XML描述文件中指定。

Java持久化查询语言 (JPQL)对存储在关系数据库中的实体进行查询。查询在语法上类似于SQL查询,但是操作的是实体对象而不是直接对数据库表进行操作。

在引入EJB 3.0规范之前,许多企业级Java开发人员使用由持久化框架(例如Hibernate)或数据访问对象(DAO)提供的轻量级持久化对象,来代替实体bean(EJB的一种)。 这是因为在以前的EJB规范中,实体bean需要太多复杂的代码和繁重的资源占用,并且由于bean和DAO对象或持久化框架之间的源代码中的互连和依赖性,它们只能在Java EE应用程序服务器中使用。 因此,最初在第三方持久性框架中提供的许多功能都被合并到Java Persistence API中,并且从2006年开始,像Hibernate(版本3.2)和TopLink Essentials这样的项目已经实现Java Persistence API规范。

EJB 3.0规范(本身是Java EE 5平台的一部分)包含Java 持久化 API的定义。 无论如何,终端用户不需要EJB容器或Java EE应用程序服务器即可运行使用此持久性API的应用程序。 Java 持久化 API的未来版本将在单独的JSR和规范中定义,而不是在EJB JSR /规范中定义。

Java 持久化 API取代了EJB 2.0 CMP(持久化管理容器)的持久性解决方案

Java 持久化 API作为统一Java Data Objects API和EJB 2.0容器管理持久性(CMP)API的一部分来开发。截至2009年,支持这些API的大多数产品都支持Java 持久化 API。

Java 持久化 API仅为关系数据库管理系统提供持久化特性。也就是说,JPA专注于对象关系映射(ORM)(请注意,除了关系数据库之外,还有JPA提供程序支持其他数据库模型,但这超出了JPA的设计范围)。有关JPA角色的说明,请参阅JPA 2规范第1节简介,其中非常清楚地说明“这项工作的技术目标是为Java应用程序开发人员提供一个对象/关系映射工具,使用Java领域模型来管理关系数据库。”

Java 数据对象规范支持ORM,以及对其他类型的数据库模型的持久化,例如平面文件数据库和NoSQL数据库,包括文档数据库,图形数据库,以及字面上任何其他可想到的数据存储。

Java 持久化 API的设计者旨在提供关系持久化,其中许多关键领域来自对象关系映射工具,如Hibernate和TopLink。Java 持久化 API改进并取代了EJB 2.0,其体现在EJB 3.0中。服务数据对象(SDO)API(JSR 235)与Java 持久化 API有着截然不同的目标,被认为是互补的。 SDO API专为面向服务的体系结构,多种数据格式而非关系数据和多种编程语言而设计。JCP 管理SDO API的Java版本; SDO API的C ++版本通过OASIS进行管理。

Hibernate为Java提供了一个开源的对象关系映射框架。版本3.2及更高版本提供了Java 持久化 API的实现。Gavin King创立了Hibernate项目。他代表JBoss参加JSR 220,这是负责开发JPA的JCP专家组。这引发了围绕JPA和Hibernate之间关系的持续争议和猜测。Sun Microsystems表示,这些想法来自几个框架,包括Hibernate和Java 数据对象。

抽象存储库的实现是Java应用程序框架Spring的领域驱动设计的关键构建块。透明地支持所有可用的JPA实现,并支持CRUD操作以及方便地执行数据库查询。

2007年7月,JPA 2.0 在JCP的JSR 317请求中作为新版本开发。2009年12月10日,JPA 2.0被批准为最终正式标准。JPA 2.0的重点是提供一些流行的ORM供应商中存在的特性,但在JPA 1.0中不能获得一致认可。

主要特性包括:

支持 JPA 2.0 的供应商:

2011年7月,JPA 2.1 在JCP的JSR 338请求中作为新版本开发。2013年5月22日,JPA 2.1被批准为最终正式标准。

主要特性包括:

支持 JPA 2.1 的供应商:

2017年,JPA 2.2 在JCP的JSR 338请求中作为维护版本发布开发。维护审查已于2017年6月19日获得批准。

主要特性包括:

支持 JPA 2.2 的供应商:

未来的JPA规范信息可在此处获得:

2015年11月,Linda DeMichiel在javaee-spec用户邮件中宣布Lukas Jungmann接任规范化主管。Linda的声明还表示,“计划在Java EE 8时间框架内为JPA 2.2做MR”。

相关

  • 柬埔寨法院特别法庭柬埔寨法院特别法庭(高棉语:អង្គជំនុំជម្រះវិសាមញ្ញក្នុងតុលាការកម្ពុជា,angk chomnoumchomreah visaeamonhnh knong tolakar kampo
  • 骑士精神骑士精神,是中世纪欧洲上层社会的一种精神文明,它是以个人身份的优越感为基础的道德与人格的表现,但它也积淀着西欧民族远古尚武精神的某些积极因素,继承了古代欧洲部落文明至早
  • 法鲁克一世法鲁克一世(阿拉伯语:فاروق الأول‎;拉丁文转写:Fārūq al-Awwal,1920年2月11日-1965年3月18日),全名穆罕默德·法鲁克(Muhammad Fārūq),埃及国王,1936年至1952年在位,是穆
  • Sedentaria见内文隐居亚纲(学名:Sedentaria),又名定居亚纲,旧称管栖目,是环节动物门多毛纲下的一个亚纲,该类动物过着穴居生活;会挖洞并透过分泌制造栖管居住;身体异律分节,头部不明显,疣足退化。
  • 2013年巴基斯坦国会选举米尔汗·哈萨·霍索 无党派人士纳瓦兹·谢里夫 巴基斯坦穆斯林联盟(谢里夫派)2013年巴基斯坦大选于2013年5月11日进行。其中选出巴基斯坦国会下院国民议会以及旁遮普省、信德
  • 吴兴郡吴兴郡,中国三国吴时设置的郡,为“三吴”之一,治所在乌程县。东吴孙皓宝鼎元年(266年),分吴郡之阳羡、永安、余杭、临水,丹杨郡之故鄣、安吉、原乡、于潜、乌程九县置吴兴郡,治乌程,
  • 耒阳市耒阳市(汉语拼音:lěiyáng;注音:ㄌㄟˇ ㄧㄤˊ),别称纸都,是中华人民共和国湖南省衡阳市下辖县级市,因古代神农氏在此地发明创造耒耜(古代农耕工具)而得名,亦有耒水贯穿其中。耒阳也是
  • 陈国陈,出 土金文资料作敶,是中国历史上西周至春秋时代的一个妫姓诸侯国,是帝舜后裔,为三恪和春秋十二诸侯之一。建国君主为担任周文王的陶正一职(也就是掌管制作陶器的官),的遏父(又
  • 狼蛛科刺狼蛛属 奇蛛属 舞蛛属 穴狼蛛属 狼蛛属 蒙狼蛛属 豹蛛属 西伯蛛属 索蛛属 等等狼蛛科(学名:)是蜘蛛目的一科。因行动敏捷、性凶猛、经常从后追上猎物,而通称狼蛛。
  • 作业作业,又称功课、家课,是指在学校内、由教师分配给学生并要求他们完成的任务,目的通常是希望学生能预习或复习知识。常见的作业类型包括阅读课本中的特定章节、阅读指定的书籍、