Hibernate是一種強大的可提供對象關系持久化和查詢服務的中間件它可以使程序員依據面向對象的原理開發持久化類實現對象之間的關聯繼承多態組合集合等
Hibernate提供了它特有的數據庫查詢語言HQL這種查詢語言屏蔽了不同數據庫之間的差別使你可以編寫統一的查詢語句執行查詢不同於其他持久化解決方案的是Hibernate並沒有把SQL的強大功能屏蔽掉而是仍然兼容SQL這使你以往的關系技術依然有效
一Hibernate的版本更新情況
Hibernate版本更新速度很快目前為止有兩個階段性的版本Hibernate和Hibernate這一點程序員從其Jar文件名便可以看出來至本文寫成之日最新發布的版本是Hibernate
Hibernate系列的最高版本是HibernateHibernate系列在編寫本書時的最高版本是Hibernate GA版GA也就是General Availability即推薦廣泛使用的版本但目前使用較多且較穩定的版本是Hibernate 或Hibernat
另外自Hibernate發布以來其產品線愈加成熟相繼出現了Hibernate注釋Hibernate實體管理器Hibernate插件工具等一系列產品套件在方便程序員使用Hibernate進行應用程序的開發的同時也逐漸增強了Hibernate產品線的實力
但目前市面上用於學習Hibernate開發的圖書並不多見大多是介紹老版的Hibernate最近希賽和博文聯手推出的《貫通Hibernate開發》對最新的Hibernate作了詳盡的解答推薦讀者閱讀
二Hibernate的新特性
Hibernate在產品的應用性上有了極大提高並且基於Java進行了改進且與EJB進行了集成在功能上有了很大的提升同時Hibernate還對當今另一主流開發平台——微軟的NET平台進行了支持因此具有更加強大的生命力
相對於HibernateHibernate版本的變化包括三個方面()API的變化API的變化中比較重大的變化是包名的變化主要是包的根路徑發生了改變這一點程序員只需要在Eclipse中查看Hibernatejar這個文件中所包含的類就知道了Hibernate 的根路徑從Hibernate的netsfhibernate變成了orghibernate由於這兩個路徑完全不同所以程序員能夠在同一個應用程序中同時使用Hibernate和Hibernate如果希望把已有的應用升級到Hibernate那麼升級的第一步是把Java源程序中的所有netsfhibernate替換為orghibernate另外在Hibernate中HibernateException異常以及它的所有子類都繼承了JavalangRuntimeException因此在編譯時編譯器不會再檢查HibernateException在Hibernate中Session接口的createSQLQuery()方法被廢棄被移到orghibernateclassicSession接口中Hibernate采用新的SQLQuery接口來完成相同的功能在UserType和CompositeUserType接口中也都加入了一些新的方法這兩個接口被移到orghibernateusertype包中用戶定義的UserType和CompositeUserType實現類必須實現這些新方法Hibernate提供了ParameterizedType接口用於更好的重用用戶自定義的類型
以上的這些主要變化將會影響到應用程序程序員必須要進行相應的調整才能使基於Hibernate的應用程序正常運行
()元數據元數據主要是指Hibernate映射文件中各種元素和屬性的用法的變化首當其沖的是Hibernate映射文件的文檔類型定義即DTD文件發生了變化這一點程序員可以從任何一個Hibernate的映射文件的文件頭中發現即在元素中定義的URL從mappingdtd變成了mappingdtd
還有一個重大的改變就是lazy屬性的默認值從false變成了true這也是Hibernate從優化應用程序性能的角度出發所做出的決定因為當lazy=false時Hibernate對所有字段都采取預先抓取的策略如果程序員希望采用延遲加載必須手工在映射文件中將lazy屬性的值設為true然而總是采用預先抓取策略勢必會造成極大的資源占用從而降低應用程序的性能所以從應用程序的角度來講更希望lazy的默認值是true這樣在有需要的時候才去采用預先抓取的檢索策略
()HQL查詢語句Hibernate 采用新的基於ANTLR的HQL/SQL查詢翻譯器不過Hibernate的查詢翻譯器也依然存在在Hibernate的配置文件中hibernatequeryfactory_class屬性用來選擇查詢翻譯器
三Hibernate的發展趨勢
Hibernate是一個非常優秀的持久層解決方案具有以下發展趨勢()與其他開發框架的集成將越來越成熟如與strutsspringjbpm的集成充分發揮Hibernate自身的優勢也吸取了對方框架的優勢在軟件系統的各個層各司其職
()產品線的逐漸完善通過增加若干的工具套件並支持net平台使Hibernate具有更強大的生命力
()與EJB更好的集成集成EJB開始將重點轉向重量級應用使得Hibernate在企業級應用中必將占據一席之地
Hibernate的輕量級 ORM 模型逐步確立了在Java ORM架構中領導地位甚至取代復雜而又繁瑣的EJB模型而成為事實上的Java ORM工業標准而且其中的許多設計均被JEE 標准組織吸納而成為最新EJB規范的標准
隨著Hibernate的廣泛應用越來越多的Java中間件廠商和Java項目(如JBossJBPM等)開始把目光集中到Hibernate上並將其納入自身的體系使Hibernate具有了越來越廣闊的發展前景
From:http://tw.wingwit.com/Article/program/Java/ky/201311/28316.html