标签:jpa
JavaPersistence API,用于对象持久化的API,是Java EE 5.0 平台标准的 ORM 规范,使得应用程序以统一的方式访问持久层。
JPA 是EJB3 EntityBean,是一套从EJB3.0核心标准中分离出来的独立的标准文档,J2EE 4规范中最为人所熟悉的用来处理数据持久的Entity Bean,在Java EE5中被推到重来,取而代之的是java开发的通用持久化规范Java Persistence API 1.0, 其实就是完全重新定义了的EntityBean规范。
JPA作为java中负责关系数据持久化的组件已经完全独立出来成为一个单独的规范,而不再属于Enterprise Java Bean的范畴(EJB更多的是指Stateless/Stateful session bean和Message Driven Bean)。
使用的 Java 的版本决定了实际是否可以应用 JPA。因为JPA 是 EJB 3.0 规范的一部分,而EJB 3.0 规范是 Java EE 5 版本的一部分。如果您未更新到 Java EE 5,则无法使用 JPA。
提供了以pojo编程模型为持久化对象的机制:通过 JDK 5.0 注解或 XML 描述对象-关系表的映射关系,并将运行期的实体对象持久化到数据库中,下图描述了 JPA 的结构:
Sun引入新的 JPA ORM规范出于两个原因:
? 其一,简化现有JavaEE和 Java SE应用的对象持久化的开发工作:和实体Bean相比,不需要配置文件,提供了更好的开发体验不同于 EJB 3.0,JPA并不是J2EE环境专用,在J2SE的环境中也可以使用(不依赖J2EE容器,是java中的通用API)
? 其二,Sun希望整合ORM技术,统一各种ORM框架的规范,实现天下归一。(目前Hibernate 3.2、TopLink 10.1.3以及OpenJpa都提供了JPA的实现)
JPA是hibernate的一个抽象或者可以理解为接口(就像JDBC和JDBC驱动的关系):JPA是规范:JPA本质上就是一种ORM规范,不是ORM框架——因为JPA并未提供ORM实现,它只是制订了一些规范,提供了一些编程的API接口,但具体实现则由用用服务器厂商来提供实现。Hibernate 是实现:Hibernate除了作为ORM框架之外,它也是一种JPA实现。
从功能上来说, JPA现在就是Hibernate功能的一个子集。
JPA 的目标之一是制定一个可以由很多供应商实现的API,目前Hibernate 3.2、TopLink 10.1.3以及OpenJpa都提供了JPA的实现
? Hibernate
JPA的始作俑者就是Hibernate的作者,Hibernate 从3.2开始,就开始兼容JPA。
? OpenJPA
OpenJPA 是 Apache 组织提供的开源项目,OpenJPA虽然免费,但功能、性能、普及性等方面更加需要加大力度。
? TopLink
TopLink以前需要收费,如今开源了。
JPA做为Java EE5里面的新成员,跟jdbc一样就是一接口,具体实现由服务器实现
你选择什么服务器就基本上决定了用哪个JPA实现
n JBoss就是用hibernate去实现的
n weblogic是用OpenJPA
n Oracle是用TopLink
? 标准化 提供相同的访问 API,这保证了基于JPA开发的企业应用能够经过少量的修改就能够在不同的JPA框架下运行。越来越多的提供商期待在不久的将来提供 JPA 实施。
? 对容器级特性的支持 JPA 框架中支持大数据集、事务、并发等容器级事务
? 简单易用,集成方便 JPA的主要目标之一就是提供更加简单的编程模型,在JPA框架下创建实体和创建Java 类一样简单,只需要使用 javax.persistence.Entity进行注释;JPA的框架和接口也都非常简单,
? 可媲美JDBC的查询能力 JPA的查询语言是面向对象的,JPA定义了独特的JPQL,而且能够支持批量更新和修改、JOIN、GROUP BY、HAVING 等通常只有 SQL 才能够提供的高级查询特性,甚至还能够支持子查询。
? 支持面向对象的高级特性 JPA 中能够支持面向对象的高级特性,如类之间的继承、多态和类之间的复杂关系,最大限度的使用面向对象的模型
由于非常新,JPA 规范可能还需要进过重要发展才会变得很稳定。
JPA是一个规范而不是一个产品。
需要提供商提供一个实施,才能获得这些基于标准的 API 的优势。
JPA是Hibernate、TopLink,JDO等ORM框架真子集,只提供其中最好的功能,如果应用程序中需要的功能,但是规范中没有提供的功能,则使用供应商特有的API ,移植起来比较麻烦,所以要尽可能地使用JPA API。
? ORM映射元数据:JPA支持XML和 JDK 5.0注解两种元数据的形式,元数据描述对象和表之间的映射关系,框架据此将实体对象持久化到数据库表中。
? JPA的API:用来操作实体对象,执行CRUD操作,框架在后台替我们完成所有的事情,开发者从繁琐的 JDBC和 SQL代码中解脱出来。
? 查询语言:这是持久化操作中很重要的一个方面,通过面向对象而非面向数据库的查询语言查询数据,避免程序的 SQL语句紧密耦合。
标签:jpa
原文地址:http://blog.csdn.net/u022812849/article/details/42502091