注册 登录  
 加关注
   显示下一条  |  关闭
温馨提示!由于新浪微博认证机制调整,您的新浪微博帐号绑定已过期,请重新绑定!立即重新绑定新浪微博》  |  关闭

Big鹏 ——学无止境

不谋万世者,不足谋一时;不谋全局者,不足谋一域

 
 
 

日志

 
 

JPA简介及与EJB的关系  

2015-03-07 09:50:21|  分类: 小技能 |  标签: |举报 |字号 订阅

  下载LOFTER 我的照片书  |

1.     概述

首先,Sun引入新的JPA ORM规范出于两个原因:

?  其一,简化现有Java EEJava SE应用开发工作

?  其二,Sun希望整合ORM技术,实现天下归一

JPA全称为Java Persistence API Java持久化APISun公司在Java EE 5规范中提出的Java持久化接口。主要是为了解决ORM框架的差异,它的出现在某种程度上能够解决目前ORM框架之间不能够兼容的问题,对开发人员来说,能够更好的在JPA规范下进行系统开发。

事实上,JPA不是一项技术,而是一种标准,因为JPA只是一套接口,本身不能完成任何事情。JPA只是规范了Java持久化的官方标准。下图说明了JPA在系统架构中的作用,使用JPA持久化对象,而不是依赖于某一个ORM框架:

JPA简介及与EJB的关系 - 王志鹏 - 王志鹏 廊坊师范学院信息技术提高班第九期

 

2.     JPA主要技术

JPA的宗旨是为POJO提供持久化标准规范,由此可见,经过这几年的实践探索,能够脱离容器独立运行,方便开发和测试的理念已经深入人心了。Hibernate3.2TopLink 10.1.3以及OpenJPA都提供了JPA的实现。

JPA的总体思想和现有HibernateTopLinkJDOORM框架大体一致。总的来说,JPA包括以下3方面的技术:

2.1  ORM映射元数据

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

2.2  API

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

2.3  查询语言

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

3.     JPA优势

3.1  标准化

JPA JCP 组织发布的 Java EE 标准之一,因此任何声称符合 JPA 标准的框架都遵循同样的架构,提供相同的访问API,这保证了基于JPA开发的企业应用能够经过少量的修改就能够在不同的JPA框架下运行。

容器级特性的支持JPA框架中支持大数据集、事务、并发等容器级事务,这使得 JPA 超越了简单持久化框架的局限,在企业应用发挥更大的作用。

3.2  简单方便

JPA的主要目标之一就是提供更加简单的编程模型:在JPA框架下创建实体和创建Java 类一样简单,没有任何的约束和限制,只需要使用 javax.persistence.Entity进行注释,JPA的框架和接口也都非常简单,没有太多特别的规则和设计模式的要求,开发者可以很容易的掌握。JPA基于非侵入式原则设计,因此可以很容易的和其它框架或者容器集成。

3.3  查询能力

JPA的查询语言是面向对象而非面向数据库的,它以面向对象的自然语法构造查询语句,可以看成是Hibernate HQL的等价物。JPA定义了独特的JPQLJava Persistence Query Language),JPQLEJB QL的一种扩展,它是针对实体的一种查询语言,操作对象是实体,而不是关系数据库的表,而且能够支持批量更新和修改、JOINGROUP BYHAVING 等通常只有 SQL 才能够提供的高级查询特性,甚至还能够支持子查询。

3.4  高级特性

JPA 中能够支持面向对象的高级特性,如类之间的继承、多态和类之间的复杂关系,这样的支持能够让开发者最大限度的使用面向对象的模型设计企业应用,而不需要自行处理这些特性在关系数据库的持久化。

4.     EJB3JPA的关系

由于历史的原因,EJB 3JPA有着藕断丝连的关系。EJB 2.X中,EJB有三种类型的Bean,分别是会话BeanSession Bean)、实体BeanEntity Bean)和消息驱动BeanMessage Driven Bean)。

随着EJB3规范的推出,EJB中的实体Bean(Enity Bean)逐渐被JPA规范所替代,这也是为什么JPA的规范会包含在EJB3的规范中的原因.

JPA不仅能够在EJB环境中使用,也能够在J2SE的环境中使用,相对于EJB2.X的实体BEAN,使用的范围更广。

总之,简单的说,JPA虽然出自EJB3,但是其使用的范围却大于EJB3,不仅可以在JavaEE5,也可以在JavaSE的环境中,如图所示EJB3JPA的关系:

JPA简介及与EJB的关系 - 王志鹏 - 王志鹏 廊坊师范学院信息技术提高班第九期

 

5.     总结

JPA并不是一项技术,而是一种标准,因为JPA只是一套接口,本身不能完成任何事情。JPA只是规范了Java持久化的官方标准,希望整合ORM技术,实现天下归一。

JPAEJB 3.0软件专家组开发,宗旨是为POJO提供持久化标准规范。作为JSR-220实现的一部分,但它不囿于EJB 3.0,你可以在Web应用、甚至桌面应用中使用。

  评论这张
 
阅读(1604)| 评论(2)
推荐 转载

历史上的今天

评论

<#--最新日志,群博日志--> <#--推荐日志--> <#--引用记录--> <#--博主推荐--> <#--随机阅读--> <#--首页推荐--> <#--历史上的今天--> <#--被推荐日志--> <#--上一篇,下一篇--> <#-- 热度 --> <#-- 网易新闻广告 --> <#--右边模块结构--> <#--评论模块结构--> <#--引用模块结构--> <#--博主发起的投票-->
 
 
 
 
 
 
 
 
 
 
 
 
 
 

页脚

网易公司版权所有 ©1997-2018