然而JDO
和EJB
两大商业主流标准的分裂
是大部分人
甚至包括厂商所不希望看到的
于是最终EJB
的Lead Linda DeMichiel和JDO
的Lead Craig Russell联名发表公开信
宣布了一个合并EJB
和JDO
持久层规范的计划
新的持久层规范将以JSR
(EJB
)的持久层规范为基础
融合JDO
的部分特性
新的持久层规范将进入J
EE
之中
独立于EJB存在
既可以inside J
EE容器来使用
也可以脱离J
EE容器
独立的运行
这个新的持久层框架可以说完全是一个政治的产物EJB Vendors出于自身利益反对JDO使得JDO没有办法成为JEE的一部分然而标准的分裂也是大部分人更加不希望看到的于是最终JDO成了政治斗争的牺牲品从表面上来看JDO和EJB EntityBean都将被新的持久层框架取代似乎JDO并没有吃亏但实际上JDO标准已经成熟部分JDO领导厂商的产品已经蓄始待发而 EJB EntityBean还处于Early Draft等待产品诞生至少也是一年之后的事情了另外值得耐人寻味的是新的持久层框架将基于当前EJB EntityBean再结合JDO的规范并且将处于EJB EG的控制之下再加入一些JDO EG的成员因此可以看出来新的持久层框架无疑还是以EJB EG为主导进行制定的
从长远来看EJB和JDO 的政治斗争对双方都有好处长期分裂带来的后果对双方的发展都不利然而从短期来看JDO确实是在这场政治斗争中败下阵来最直接的体现就是已经有一些JDO的用户对JDO的前景产生了动摇和迷茫不少的JDO爱好者更是直言JDO将死
TopLink是一个老牌的 O/R Mapping软件了自从被Oracle收购之后又增加了对Oracle数据库的良好支持和对Oracle AS EntityBean的支持Oracle提供了TopLink的图形设计环境可以使得设计好的TopLink域模型既可以被单独用在TopLink 中也可以被用在EJB CMP中因此看来TopLink也走了一条和Hibernate同样策略的路
TopLink的问题在于相比Hibernate的开源和免费的优势来说TopLink既不开源售价又不菲上本来商业软件TopLink应该在技术支持和商业宣传策略上拥有足够的优势然而Oracle公司毕竟是一个以数据库为核心产品的公司其他的一切产品都是为了数据库销售业绩而服务的在Oracle产品线中处于一个从属地位的TopLink由于先天不足只能眼睁睁看着Hibernate的日益壮大而无所作为因此 TopLink更多的被局限在购买了Oracle数据库并且绑定Oracle数据库的用户群体中
JEE的新持久层规范将毫无悬念的成为未来持久层框架的主流API无论是HibernateJDO还是TopLink终将兼容这个主流商业API在当前的这三种持久层API当中Hibernate无疑是最有前途的这是因为
新的持久层规范将基于EJB EntityBean规范这意味着仍将以Hibernate的设计理念为基础
JBoss对EJB规范跟随的步伐非常紧密在规范制定过程中就不断的发布参考实现产品因此可以对对EJB规范产生比较大的影响力
综上所述我们有理由对Hibernate的前途抱有强烈的信心
最后的一个疑问是既然JEE的新持久层框架可以脱离JEE容器运行那么大家不全部都去用Hibernate的后一套兼容API而完全放弃Hibernate的原生API了吗?那么是否意味着Hibernate做为一个独立产品的使命彻底终结呢?
对于这个问题我的看法是JEE的持久层规范要综合各个EJB VendorJDO Vendor的意见要平衡他们之间的利益得失那么这样一个瞻前顾后的规范必然无法覆盖所有应用场合的全面需要这不像Hibernate的原生API 可以随时根据开发人员的要求增加功能那么灵活因此我预计Hibernate的原生API以其更加强大的功能仍然会吸引一大批人直接使用原生API而不是兼容JEE规范的API
总而言之对于我们当前的持久层开发来说最好的办法莫过于坚定的使用DAO层来隔离持久层和业务层逻辑那么不管未来持久层风云如何变换但凡基于POJO的持久层框架都可以被我们拿来任意替换
[] []