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