本文介绍JPA是什么和Java EE对象持久化标准,包括对容器级特性的支持和支持面向对象的高级特性等。

JPA经过JDK 5.0注解或XML描绘方针-联系表的映射联系,并将运转期的实体方针耐久化到数据库中。

JPA是什么和Java EE目标耐久化规范浅析  JPA Java EE 第1张

来源

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注解两种元数据的方式,元数据描绘方针和表之间的映射联系,结构据此将实体方针耐久化到数据库表中;

JPA的API

用来操作实体方针,履行CRUD操作,结构在后台替咱们完结避实就虚的工作,开发者从繁琐的JDBC和SQL代码中摆脱出来。

查询打量

这是耐久化操作中很重要的一个方面,经过面向方针而非面向数据库的查询打量查询数据,防止程序的SQL句子严密耦合。

JPA的优势

1.标准化

JPA 是 JCP 安排发布的 Java EE 标准之一,因而任何宣称契合 JPA 标准的结构都遵从相同的架构,供给相同的拜访 API,这确保了根据JPA开发的企业运用能够经过少数的修正就能够在不同的JPA结构下运转。


2.对容器级特性的支撑

JPA 结构中支撑大数据集、事务、并发等容器级事务,这使得 JPA 逾越了简略耐久化结构的约束,在企业运用发挥更大的效果。

3.简略易用,集成便利

JPA的首要方针之一便是供给愈加简略的编程模型:在JPA结构下创立实体和创立Java 类相同简略,没有任何的束缚和约束,只需求运用 Javax.persistence.Entity进行注释;JPA的结构和接口也都十分简略,没有太多特别的规矩和规划形式的要求,开发者能够很简略的把握。JPA根据非侵入式准则规划,因而能够很简略的和其它结构或许容器集成。

4.可比美JDBC的查询才能

JPA的查询打量是面向方针而非面向数据库的,它以面向方针的天然语法结构查询句子,能够当作 是Hibernate HQL的等价物。JPA界说了共同的JPQL(Java Persistence Query Language),JPQL是EJB QL的一种扩展,它是针对实体的一种查询打量,操作方针是实体,而不是联系数据库的表,而且能够支撑批量更新和修正、JOIN、GROUP BY、HAVING 等一般只需 SQL 才能够供给的高档查询特性,乃至还能够支撑子查询。

5.支撑面向方针的高档特性

JPA 中能够支撑面向方针的高档特性,如类之间的承继、多态和类之间的杂乱联系,这样的支撑能够让开发者最大极限的运用面向方针的模型规划企业运用,而不需求自行处理这些特性在联系数据库的耐久化。

JPA的供货商

JPA 的方针之一是拟定一个能够由许多供货商完结的API,而且开发人员能够编码来完结该API,而不是运用私有供货商特有的API。因而开发人员只需运用供货商特有的API来取得JPA标准没有处理但运用程序中需求的功用。尽或许地运用JPA API,可是当需求供货商揭露可是标准中没有供给的功用时,则运用供货商特有的API。

1.Hibernate

JPA是需求Provider来完结其功用的,Hibernate便是JPA Provider中很强的一个,现在来说应该无人能出其右。从功用上来说,JPA现在便是Hibernate功用的一个子集。Hibernate 从3.2开端,就开端兼容JPA。Hibernate3.2取得了Sun TCK的JPA(Java Persistence API) 兼容认证。

只需了解Hibernate或许其他ORM结构,在运用JPA时会发现其实十分简略上手。例如实体方针的状况,在Hibernate有自在、耐久、游离三种,JPA里有new,managed,detached,removed,明眼人一看就知道,这些状况都是一一对应的。再如flush办法,都是对应的,而其他的再如说Query query = manager.createQuery(sql),它在Hibernate里写法上是session,而在JPA中变成了manager,所以从 Hibernate到JPA的价值应该是十分小的。

相同,JDO,也开端兼容JPA。在ORM的范畴中,看来JPA现已是王道,标准便是标准。在各大厂商的支撑下,JPA的运用开端变得广泛。

2.Spring

Spring + Hibernate 常常被称为 Java Web 运用人气最旺的结构组合。而在 JCP 经过的 Web Beans JSR ,却欲将JSF + EJB + JPA 、来自 JBoss Seam(Spring 在外)的一些组件和EJB 3(现在能够供给有根本阻拦和依靠注入功用的简化 Session Bean 结构)的一个 Web 组合进行标准化。现在的 Spring 2.0 为 JPA 供给了完好的 EJB 容器契约,答应 JPA在任何环境内能够在 Spring 办理的服务层运用(包含 Spring 的避实就虚 AOP 和 DI 增强)。一起,关于下一个Web运用组合会是 EJB、Spring + Hibernate 仍是 Spring + JPA 的论争,早已充满于耳。

在Spring 2.0.1中,正式供给对JPA的支撑,这也促成了JPA的开展,要知道JPA的优点在于能够别离于容器运转,变得愈加的简练。

3.OpenJPA

OpenJPA 是 Apache 安排供给的开源项目,它完结了 EJB 3.0 中的 JPA 标准,为开发者供给功用强大、运用简略的耐久化数据办理结构。OpenJPA 封装了和联系型数据库交互的操作,让开发者把注意力会集在编写事务逻辑上。OpenJPA 能够作为独立的耐久层结构发挥效果,也能够轻松的与其它 Java EE 运用结构或许契合 EJB 3.0 标准的容器集成。

4.其它

现在支撑的完结包含Toplink、Hibernate Entitymanager等。TopLink曾经需求收费,现在开源了。OpenJPA尽管免费,但功用、功能、普及性等方面愈加需求加大力度。

关于EJB来说,实体Bean一直是被批判的方针,由于其太杂乱和巨大。JPA的呈现,很大程度的别离了杂乱性。这让EJB的推行也变得简略。

总而言之,JPA标准首要重视的仅是API的行为方面,而由各种完结完结大多数功能有关的调优。尽管如此,避实就虚牢靠的完结都应该具有某种数据缓存,以作为挑选。期望不久的将来,JPA能成为真实的标准。

小结

EJB 3.0和JPA 毫无疑问将是Java EE 5的首要卖点。在某些范畴中,它们给Java社区带来了竞赛优势,并使Java 在其他范畴与竞赛对手不分伯仲(由于,不可否认,现在某些范畴尚不存在根据标准的办法)。

曩昔数年来,Spring Framework一直是EJB在企业范畴的首要竞赛对手。EJB3.0标准处理了许多促进Spring鼓起的问题。跟着它的呈现,EJB3.0毫无疑问比Spring供给了更好的开发体会——最有目共睹的优势是它不需求装备文件。

JPA供给一种标准的OR映射处理方案,该处理方案彻底集成到EJB3。0兼容的容器中。JPA的长辈将会持续稳定开展,可是事务运用程序中的 raw 运用将或许会削减。完结 JPA 兼容的实体办理器好像很或许是此类技能的开展方向。

Java EE系列标准的较大问题与JPA没有任何联系。Java EE 系列标准的问题涉及到 Web和EJB容器之间的集成。Spring在此范畴依然具有首要竞赛优势。JBoss的Seam项目测验运用自界说的办法来处理这一问题。

Caucho Resin运用服务器企图扩展容器鸿沟并支撑在Web容器中运用@EJB注释。咱们期望Java EE 5.1将处理层集成的问题,为咱们供给一个全面而标准的依靠性注入办法。

在不久的将来,Sun或许会将JPA作为一个独自的JSR对待,一起JPA还或许作为Java SE的一部分。不过这些都不太重要,重要的是,咱们现在现已能够在脱离容器的情况下、在Java SE运用中运用JPA了。

JPA现已作为一项方针耐久化的标准,不光能够取得Java EE运用服务器的支撑,还能够直接在Java SE中运用。开发者将无需在现有多种ORM结构中艰难地挑选,依照Sun的近距离,现有ORM结构头顶的光环将逐渐昏暗,不再具有以往的吸引力。

【修改引荐】

  1. OpenJPA成为Apache尖端项目
  2. 在Spring中装备Glassfish JPA
  3. JPA承继类在NetBeans 6.1中遭受的问题
  4. MyEclipse 6.0发布 整合JPA结构
  5. 耐久化标准JPA(JavapersistenceAPI)
转载请说明出处
知优网 » JPA是什么和Java EE目标耐久化规范浅析

发表评论

您需要后才能发表评论