在向大家详细介绍Hibernate原生API之前,首先让大家了解下TopLink,然后全面介绍Hibernate原生API。
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数据库的用户群体中。
J2EE1.5的新持久层规范将毫无悬念的成为未来持久层框架的主流API,无论是Hibernate,JDO,还是TopLink终将兼容这个主流商业API.在当前的这三种持久层API当中,Hibernate无疑是最有前途的。这是因为:
1、新的持久层规范将基于EJB3.0 EntityBean规范,这意味着仍将以Hibernate的设计理念为基础。
2、JBoss对EJB3.0规范跟随的步伐非常紧密,在规范制定过程中就不断的发布参考实现产品,因此可以对对EJB3.0规范产生比较大的影响力。
综上所述,我们有理由对Hibernate的前途抱有强烈的信心。
最后的一个疑问是,既然J2EE1.5的新持久层框架可以脱离J2EE容器运行,那么大家不全部都去用Hibernate的后一套兼容API,而完全放弃Hibernate原生API了吗?那么是否意味着Hibernate做为一个独立产品的使命彻底终结呢?
对于这个问题我的看法是:J2EE1.5的持久层规范要综合各个EJB Vendor,JDO Vendor的意见,要平衡他们之间的利益得失,那么这样一个瞻前顾后的规范必然无法覆盖所有应用场合的全面需要,这不像Hibernate原生API 可以随时根据开发人员的要求增加功能那么灵活。因此我预计Hibernate原生API以其更加强大的功能仍然会吸引一大批人直接使用原生API,而不是兼容J2EE规范的API.
总而言之,对于我们当前的持久层开发来说,最好的办法莫过于坚定的使用DAO层来隔离持久层和业务层逻辑,那么不管未来持久层风云如何变换,但凡基于POJO的持久层框架都可以被我们拿来任意替换。
【编辑推荐】