EJB3最重要的特性是POJO编程模型,对开发人员的影响将是非常大的,因为他降低了开发人员编写EJB的要求。EJB3的bean类将更像常规的Javabean。不要求像过去那样实现特殊的回调界面或者扩展EJB类。所以它将使EJB的开发更像常规的Java开发。从EJB3.0项目的开发情况来看,除了第一个项目开发周期相对有些长之外(因为开发人员之前尚未掌握EJB3.0,相当于边学边用),后面的项目从开发周期到以后的维护时间都明显优于JDBC+javabean或sprint+hibernate的项目,软件在模块划分上更清晰,业务模块重用方面也有所提高(多种客户端J2ME,Web,Wap重用业务对象),数据库移植性方面非常棒,只需修改一下数据源就很容易切换数据库。
JavaEE需要一个与Hibernate类似的O/R映射的框架,这个规范为JSR-220;Hibernate仅关注ORM,而EJB3.0更多则更多表现为一种组件框架,其中包含ORM部分。EJB3.0在设计过程中,曾经得益于Hibernate的成功,EJB3.0EntityBean的设计理念完全来自于Hibernate。Hibernate的EntityManager产品为EJB3.0的EntityBean的一种Implementation。
JPA基于JavaSE5.0的注记实现O/Rmapping,Hibernate基于XML文件,虽然Hibernate也提供HibernateAnnotation支持Annotation方式。有两种定义映射的方法:元数据(注记)和映射文件。尽管我们提倡采用元数据的方法,但应该也注意到了它所带来的不便。从本质上讲,此方法牵涉应用程序的两个逻辑层:域模型和映射信息。因为这两个层是分散的,所以这两个层需要使用不同技术进行单独测试。元数据方法本身不会影响层的可测试性。更确切的说,元数据方法使这两个层好像只是一个层,由于受一系列因素的影响,这可能会引起问题。
Hibernate只是一种O/R映射框架,JavaEE更需要一个O/R映射规范.JPA为EJB3.0规范中的一个重要内容,基于JPA的实现软件具有与Hibernate同样的优势。JPA为轻量级的对象关系映射实现持久化存储的API。JPA可以使用在JavaSE和JavaEE环境中。
什么是JPA?
JavaEE5.0用于对象持久化的API
EJB3.0规范的重要组成部分
吸取了主流持久层框架例如Hibernate的优点
Oracle提供Toplink实现,为Oracle的开源JPA实现。
Bea提供KODO实现,被包含在Bea的weblogic商用服务器中。
JBoss提供HibernateEntityManager实现,JBossAS4.2.1支持EJB3.0。
ApacheOpenJPA为Apache软件许可下的EJB3Persistence标准的开源实现,下载地址为http://openjpa.apache.org/。OpenJPA提供了保存点功能,但JPA规范没有。因此,希望使用保存点的OpenJPA开发人员应该对代码的大部分内容使用JPA规范,而借助OpenJPAEntityManager来设置和管理保存点。
您正在阅读:持久化规范JPA(JavapersistenceAPI)【编辑推荐】