随笔 - 3, 文章 - 152, 评论 - 17, 引用 - 0
数据加载中……

Hibernate的检索方式

 Q:Hibernate的检索方式有很多
对象图的导航检索,load/get检索,HQL(find,Query)检索,QBC(Criteria,QBE)检索以及本地数据库SQL检索.
那么,在实际应用中到底选择哪一种检索好?它们之间的检索有哪些联系和区别呢?
 

A:(by Robbin)HQL功能最强大,适合各种情况,但是动态条件查询构造起来很不方便
Criteria最适合动态条件查询,不太适合统计查询,QBE还不够强大,只适合相当简单的查询
NativeSQL可以实现特定数据库的SQL,但是可移植性就牺牲了


Hibernate2的Criteria功能不够完善,所以Hibernate2上面可用的只有HQL和NativeSQL,Hibernate3的Criteria已经非常强大了。

我的选择原则是:

针对web应用来说,大部分常规查询都是动态条件查询,所以首选使用Criteria,并且Hibernate3提供了DetachedCriteria,可以在web层构造好DetachedCriteria再进入session执行查询,非常方便实用的特性。

但是涉及到统计查询和非常复杂的关联查询,Criteria就无能为力了,这种情况下我选择使用HQL。

最后如果必须使用某些数据库的特性,例如Oracle的"...connect with ... by"这样的SQL,则选择使用NativeSQL。

posted on 2005-08-09 21:21 阅读(377) 评论(0)  编辑  收藏 所属分类: Hibernate


只有注册用户登录后才能发表评论。


网站导航: