升级到Hibernate3.0的理由
2007-10-27 15:25
561 查看
2005年08月03日 12:17:00
团队升级一次不容易,总要找到足够的理由或者借口:查询语法的全面增强;真正彻底的OR映射;性能的提升是三个的主要理由。另外,买一送一的,还有四个暂时不是理由的理由。
查询语法全面增强
HQL,Native SQL ,Criteria都有大幅增强,不再有太多无法完成需要sql辅助的地方
1.HQL语法增强
使用Antlr的作为语法引擎
支持subquery,distinct, nullif,case ,cast,having count(*)在内的绝大部分SQL语法
支持Bulk-Update,Bulk-Delete 语法
"update Customer set name = :newName where name = :oldName";
2.Native SQL增强
2.0时的Native基本上是流血上市,中看不中用的。3.0时才基本可用。
3. 非完整对象的查询结果返回Map 而不是Array.
2.0时按array[0],array[1]访问查询结果根本是无人敢用的语法,Map的好处是可以按名称取值
完美支持三种O/R典型映射及其混合
discrim(整个继承树在同一个表,通过discrim列区分不同的子类)
unionclass(每个子类一个表,每个表拥有全部属性)
joinClass(每个父类每个子类各有一个表,父类的属性在父表,子类的表只包含子类的属性)
4.discrim支持formula虚拟列做标识符
不再需要一个单独的discriminator列,可以通过对其他列的计算得出子类的标识符
>discriminator type="int"
formula="CASE WHEN company is null THEN 0 WHEN company = 'JBoss' THEN 1 ELSE 2 END"/<
5.union class支持
6.column-level lazy fecth
2.0的时候只能对one to many的列 lazy fecth,结果找一个对象经常藤连瓜瓜连藤找出10来个对象出来,很恐怖。3.0终于没有这个恶梦了。
买一送一的new feactures
1.EJB3 annotation, 取代xml-base的hbm文件。
2.Handwrite CRUD SQL, 向ibatis的地盘讨饭。
3.持久化XML ,除了POJO外,还支持XML的持久化,方便WebService, ESB类的应用。
4.One Class map to mutible Table,打破 one table,one object的范式。
Trackback: http://tb.blog.csdn.net/TrackBack.aspx?PostId=444856
团队升级一次不容易,总要找到足够的理由或者借口:查询语法的全面增强;真正彻底的OR映射;性能的提升是三个的主要理由。另外,买一送一的,还有四个暂时不是理由的理由。
查询语法全面增强
HQL,Native SQL ,Criteria都有大幅增强,不再有太多无法完成需要sql辅助的地方
1.HQL语法增强
使用Antlr的作为语法引擎
支持subquery,distinct, nullif,case ,cast,having count(*)在内的绝大部分SQL语法
支持Bulk-Update,Bulk-Delete 语法
"update Customer set name = :newName where name = :oldName";
2.Native SQL增强
2.0时的Native基本上是流血上市,中看不中用的。3.0时才基本可用。
3. 非完整对象的查询结果返回Map 而不是Array.
2.0时按array[0],array[1]访问查询结果根本是无人敢用的语法,Map的好处是可以按名称取值
" select new map(goods.goodsNo as goodsNo,goods.code as code) from Goods goods" Map goods =(Map)list.get(0); Strng code = (String)goods.get("code");真正的OR映射
完美支持三种O/R典型映射及其混合
discrim(整个继承树在同一个表,通过discrim列区分不同的子类)
unionclass(每个子类一个表,每个表拥有全部属性)
joinClass(每个父类每个子类各有一个表,父类的属性在父表,子类的表只包含子类的属性)
4.discrim支持formula虚拟列做标识符
不再需要一个单独的discriminator列,可以通过对其他列的计算得出子类的标识符
>discriminator type="int"
formula="CASE WHEN company is null THEN 0 WHEN company = 'JBoss' THEN 1 ELSE 2 END"/<
5.union class支持
>class name="Being" abstract="true"< >id name="id" unsaved-value="0" column="bid"< >generator class="increment"/< >/id< >property name="identity" column="ident"/< >union-subclass name="Human" table="aliens"< >property name="sex" column="sex"/< >/union-subclass< >/class<关键性能升级
6.column-level lazy fecth
2.0的时候只能对one to many的列 lazy fecth,结果找一个对象经常藤连瓜瓜连藤找出10来个对象出来,很恐怖。3.0终于没有这个恶梦了。
买一送一的new feactures
1.EJB3 annotation, 取代xml-base的hbm文件。
2.Handwrite CRUD SQL, 向ibatis的地盘讨饭。
3.持久化XML ,除了POJO外,还支持XML的持久化,方便WebService, ESB类的应用。
4.One Class map to mutible Table,打破 one table,one object的范式。
Trackback: http://tb.blog.csdn.net/TrackBack.aspx?PostId=444856
相关文章推荐
- 升级到Hibernate3.0的理由
- 如何把Hibernate2.1升级到Hibernate3.0?
- 如何从Hibernate2.1升级到Hibernate3.0?
- Hibernate2.1升级到Hibernate3.0
- 如何把Hibernate2.1升级到Hibernate3.0?
- 如何把Hibernate2.1升级到Hibernate3.0?
- 如何从Hibernate2.1升级到Hibernate3.0?
- 如何从Hibernate2.1升级到Hibernate3.0?
- 如何从Hibernate2.1升级到Hibernate3.0?
- 如何把Hibernate2.1升级到Hibernate3.0?
- 如何把Hibernate2.1升级到Hibernate3.0
- 如何把Hibernate2.1升级到Hibernate3.0?
- 如何把Hibernate2.1升级到Hibernate3.0?
- android studio 3.0 升级问题:原来module中的包没法引用
- Hibernate 3.0 HelloWorld
- 升级到 Android Studio 3.0 + Gradle 4.1 遇到的一些坑及解决方案
- 升级IE7.0的唯一理由
- hibernate4.0+版本和3.0+版本的区别总结
- iOS-网络请求-AFN升级至AFN3.0
- 关于Lucene 3.0升级到Lucene 4.x 备忘