一周精彩聚焦

 
•  一对瑞典夫妇给孩子起名“Linux”
•  美国政府机构采用谷歌软件 微软市场渐受冲
•  开源的艺术 安全市场新突破点
•  将你的电脑从Vista升级到Linux的5条理由
•  法国收获开源带来的启示
•  InfoWorld2008最佳开源软件大奖
•  美国会赞同在军用设备中使用开源软件
•  Linux发布17周年:不断发展 拓展未来
•  福布斯:美国金融风暴席卷IT业
•  好莱坞电影业:Linux是大赢家
 

相关文章

 
 •  得客户者得天下--上海大众CRM
 •  开源软件的商业化历程
 •  开源软件的商业模式
 •  红帽不满足于被动防御 向行业及政府采购突破
 •  开源软件能够赚到钱吗
 •  揭密:开源软件七大盈利模式
 •  开源ERP:流星or明日之星
 •  国外厂商纷纷投入开源界 自述其中原因
 •  IBM再向开源迈进一步
 •  Oss运动起源于自由软件运动
 •  开放源码发展史上的重要事件
 •  Sun:CIO不再禁止开源软件开始开源治理
 •  浅谈:开源软件与自由软件的目标及区别
 •  开源在中国的现实意义
 •  2008开源中国开源世界高峰论坛五月召开
 •  开源渐成趋势 中国成重要推力
 •  Facebook开源其平台程序将免费通用
 •  Sun建“新兴市场销售区”扭转销售不利
 •  开源城市发展后续:慕尼黑继续,维也纳后退
 •  IcedTea在开源与OpenJDK间架起桥梁
 •  Google驳斥跳票:Android手机下半年按时发售
 •  新威胁 恶意软件转为犯罪软件
 •  两大手机Linux推进团体合并Linux平台有望统一
 •  聚焦IT治理 实现信息化建设可持续发展
 •  ERP娱乐一把又何妨?
 •  QQ for Linux的后续改进计划出炉
 •  Shuttleworth:开源桌面需要整容
 •  理性分析:企业开源应用的神话与澄清
 •  业界盘点:10个有趣的开源软件分支
 •  火狐携支付宝启动新安全控件实现支付无障碍
 
开源框架Hibernate3的新特性以及发展趋势
         

http://www.52oss.com     2008年8.月 8日     自:news.xinbaa.com

 

Hibernate是一种强大的可提供对象-关系持久化和查询服务的中间件,它可以使程序员依据面向对象的原理开发持久化类,实现对象之间的关联、继承、多态、组合、集合等。

  Hibernate提供了它特有的数据库查询语言HQL,这种查询语言屏蔽了不同数据库之间的差别,使你可以编写统一的查询语句执行查询。不同于其他持久化解决方案的是Hibernate并没有把SQL的强大功能屏蔽掉,而是仍然兼容 SQL,这使你以往的关系技术依然有效。

  一、Hibernate的版本更新情况

  Hibernate版本更新速度很快,目前为止有两个阶段性的版本:Hibernate2和Hibernate3,这一点程序员从其Jar文件名便可以看出来。至本文写成之日最新发布的版本是Hibernate3.4。

  Hibernate2系列的最高版本是Hibernate2.1.8, Hibernate3系列在编写本书时的最高版本是Hibernate 3.2.5 GA版,GA也就是General Availability,即推荐广泛使用的版本,但目前使用较多且较稳定的版本是Hibernate 3.1.3或Hibernat 3.1.2。

  另外,自Hibernate3发布以来,其产品线愈加成熟,相继出现了 Hibernate注释、Hibernate实体管理器、Hibernate插件工具等一系列产品套件。在方便程序员使用Hibernate进行应用程序的开发的同时,也逐渐增强了Hibernate产品线的实力。

  但目前市面上用于学习Hibernate开发的图书并不多见,大多是介绍老版的Hibernate2,最近希赛和博文联手推出的《贯通Hibernate开发》,对最新的Hibernate3作了详尽的解答,推荐读者阅读。

  二、Hibernate3的新特性

  Hibernate3在产品的应用性上有了极大提高,并且基于Java1.5进行了改进,且与EJB3.0进行了集成,在功能上有了很大的提升。同时,Hibernate还对当今另一主流开发平台--微软的.NET平台进行了支持,因此具有更加强大的生命力。

  相对于Hibernate2,Hibernate3版本的变化包括三个方面:

  (1)API的变化

  API的变化中比较重大的变化是包名的变化,主要是包的根路径发生了改变,这一点程序员只需要在Eclipse中查看Hibernate3.jar这个文件中所包含的类就知道了:Hibernate 3的根路径从Hibernate2的net.sf.hibernate变成了org.hibernate。由于这两个路径完全不同,所以程序员能够在同一个应用程序中同时使用Hibernate2和Hibernate3。如果希望把已有的应用升级到Hibernate3,那么升级的第一步是把Java源程序中的所有net.sf.hibernate替换为org.hibernate。

  另外,在Hibernate3中,HibernateException异常以及它的所有子类都继承了Java.lang.RuntimeException。因此在编译时,编译器不会再检查HibernateException。在 Hibernate3中,Session接口的createSQLQuery()方法被废弃,被移到 org.hibernate.classic.Session接口中。Hibernate3采用新的SQLQuery接口来完成相同的功能。在 UserType和CompositeUserType接口中也都加入了一些新的方法,这两个接口被移到org.hibernate.usertype包中,用户定义的UserType和CompositeUserType实现类必须实现这些新方法。Hibernate3提供了 ParameterizedType接口,用于更好的重用用户自定义的类型。

  以上的这些主要变化将会影响到应用程序,程序员必须要进行相应的调整,才能使基于Hibernate3的应用程序正常运行。

  (2)元数据

  元数据主要是指Hibernate映射文件中各种元素和属性的用法的变化。首当其冲的是Hibernate映射文件的文档类型定义,即DTD文件发生了变化,这一点程序员可以从任何一个Hibernate3的映射文件的文件头中发现,即在元素中定义的URL从http://hibernate.sourceforge.net/hibernate-mapping-2.0.dtd变成了 http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd。

  还有一个重大的改变就是lazy属性的默认值从false 变成了true,这也是Hibernate从优化应用程序性能的角度出发所做出的决定。因为当lazy=false时,Hibernate对所有字段都采取预先抓取的策略,如果程序员希望采用延迟加载,必须手工在映射文件中将lazy属性的值设为true,然而总是采用预先抓取策略势必会造成极大的资源占用,从而降低应用程序的性能。所以从应用程序的角度来讲,更希望lazy的默认值是true,这样在有需要的时候才去采用预先抓取的检索策略。

  (3)HQL查询语句

  Hibernate3 采用新的基于ANTLR的HQL/SQL查询翻译器,不过,Hibernate2的查询翻译器也依然存在。在Hibernate的配置文件中,hibernate.query.factory_class属性用来选择查询翻译器。

  三、Hibernate的发展趋势

  Hibernate是一个非常优秀的持久层解决方案。具有以下发展趋势:

  (1)与其他开发框架的集成将越来越成熟:如与struts、spring、jbpm的集成,充分发挥Hibernate自身的优势,也吸取了对方框架的优势,在软件系统的各个层各司其职。

  (2)产品线的逐渐完善:通过增加若干的工具套件,并支持.net平台,使Hibernate具有更强大的生命力。

  (3)与EJB更好的集成:集成EJB,开始将重点转向重量级应用,使得Hibernate在企业级应用中必将占据一席之地。

  Hibernate的轻量级 ORM 模型逐步确立了在Java ORM架构中领导地位,甚至取代复杂而又繁琐的EJB模型而成为事实上的Java ORM工业标准。而且其中的许多设计均被J2EE 标准组织吸纳而成为最新EJB3.0规范的标准。

  随着Hibernate的广泛应用,越来越多的Java中间件厂商和Java项目(如JBoss、JBPM等)开始把目光集中到Hibernate上并将其纳入自身的体系,使Hibernate具有了越来越广阔的发展前景。 

 

 

 

关于我们 | 广告服务 | 诚征英才 | 欢迎合作 | 法律声明 | 网站地图 | 联系我们

上海凯源软件技术有限公司 版权所有 [沪ICP备08017833]

开源,开源软件,企业信息化