2011-01-15 25 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来选择查询解析器。