2011-01-15 40 views

回答

5

幾個關鍵問題的休眠2.X V的Hibernate 3.x的:

Hibernet2.x版本增加到Hibernet3.x,即包括 更多的功能和bug修復。 Hibernate 3.0與Hibernate 2.1不兼容。 在Hibernet3.0中進行的更改被精心設計爲 ,可以直接遷移代碼和元數據。 在同一應用程序中,可以運行Hibernate 2.x和Hibernate 3.x端 端。
一些在Hibernate3.x由具有Hibernet2.x相比變化:

API的變化:

Hibernate3的封裝結構在org.hibernate作爲根代替net.sf.hibernate.This重命名的
是完成允許 Hibernate2和Hibernate3在同一個 應用程序中並排運行。 Hibernate3 中已棄用的某些接口已移至org.hibernate.classic包。 在Hibernate3中將HibernateException和所有其他Hibernate異常作爲未經檢查的運行時異常更改爲 。 與Hibernate2相比,Hibernate3提供了 ParameterizedType接口,以允許更好地重用 用戶類型的實現。 Hibernate3.x封裝了Blob和Clob實例,允許將具有Blob或Clob類型屬性的類 分離,序列化, 反序列化並傳遞給merge()。 Hibernate2.x不是 支持此功能。 元數據更改:

在Hibernate2.x中,最佳做法是使用lazy =「true」映射幾乎所有的類和集合,即Hibernate3.x中的默認功能。在hibernate2.x應用程序中,需要在所有非惰性類和集合映射上明確指定 lazy =「false」。 在hibernet 3.x中,不建議使用outer-join屬性。使用fetch =「join」和fetch =「select」而不是outer-join =「true」和outer-join =「false」。 該元素是半棄用的,現在在hibernate3.x中首選。 是優選的。
是優選的。 與Hibernate2.x相比,Hibernate 3.x中的hbm XML文件中的DTD引用發生了更改。

查詢語言的變化:

Hibernate3的配備了一個全新的,基於ANTLR的
HQL/SQL查詢翻譯。但是,Hibernate 2。1查詢
解析器仍然可用。 可以通過設置Hibernate
屬性hibernate.query.factory_class來選擇查詢解析器。