hibernate 2.X和hibernate 3.0有什么区别

时间:2011-01-15 14:43:01

标签: hibernate

任何人都可以解释一下hibernate 2.X和hibernate 3.0之间的确切区别 我想不出相同的

由于

2 个答案:

答案 0 :(得分:6)

通常版本增加包括更多功能和错误修复。这是hibernate 2> 3迁移指南,它可以给你一个想法。

http://community.jboss.org/wiki/HibernateCoreMigrationGuide30

你会看到他们做了一些事情,比如取消选中所有例外,在地方添加一些方法,在某些地方弃用某些方法,等等。

答案 1 :(得分:5)

一些关键点Hibernate 2.x V Hibernate 3.x:

Hibernet2.x版本增加到Hibernet3.x,即包含    更多功能和错误修复。    Hibernate 3.0与Hibernate 2.1不兼容。    Hibernet3.0中的更改经过精心设计    允许直接迁移代码和元数据。    可以运行Hibernate 2.x和Hibernate 3.x    在同一申请中 与Hibernet2.x相比,Hibernate3.x中的一些更改:

API更改:

Hibernate3包结构植根于org.hibernate
 而不是net.sf.hibernate。这个重命名是允许的  Hibernate2和Hibernate3在同一个并排运行  应用。  某些已在Hibernate3中弃用的接口  被移动到org.hibernate.classic包中。  HibernateException和所有其他Hibernate异常都是  在Hibernate3中更改为未经检查的运行时异常。  与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相比,hbm XML文件中的DTD引用在Hibernate 3.x中更改。

查询语言更改:

Hibernate3配备了全新的基于ANTLR的产品  HQL / SQL查询转换器。但是,Hibernate 2.1查询
 解析器仍然可用。  可以通过设置Hibernate来选择查询解析器  property hibernate.query.factory_class。