浏览 4978 次
锁定老帖子 主题:Hibernate的检索方式
精华帖 (0) :: 良好帖 (0) :: 新手帖 (0) :: 隐藏帖 (0)
|
|
---|---|
作者 | 正文 |
发表时间:2005-07-11
对象图的导航检索,load/get检索,HQL(find,Query)检索,QBC(Criteria,QBE)检索以及本地数据库SQL检索. 那么,在实际应用中到底选择哪一种检索好?它们之间的检索有哪些联系和区别呢?希望有过此经验的高手可以谈谈,给我一点心得和体会,好吗? [b][/b] 声明:ITeye文章版权属于作者,受法律保护。没有作者书面许可不得转载。
推荐链接
|
|
返回顶楼 | |
发表时间:2005-07-11
各种查询的优点和缺点各不相同。
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。 |
|
返回顶楼 | |
发表时间:2005-07-11
我是几乎凡是统计都用sql(尽量用标准SQL).其余的都用HQL,因为动态查询,有一套自己的框架(烂东西,用用,省省工作量),嘻
|
|
返回顶楼 | |
发表时间:2005-08-01
xiaoyu 写道 我是几乎凡是统计都用sql(尽量用标准SQL).其余的都用HQL,因为动态查询,有一套自己的框架(烂东西,用用,省省工作量),嘻
老兄是不是在用反射动态构造hql啊,呵呵,我用过感觉很痛苦,特别是在有组合pk的情况下 |
|
返回顶楼 | |
发表时间:2005-08-01
KayMO 写道 xiaoyu 写道 我是几乎凡是统计都用sql(尽量用标准SQL).其余的都用HQL,因为动态查询,有一套自己的框架(烂东西,用用,省省工作量),嘻
老兄是不是在用反射动态构造hql啊,呵呵,我用过感觉很痛苦,特别是在有组合pk的情况下 不是的...... 如果是取单个对象,是用DAO的方法...只要查询页面的查询才用这个 |
|
返回顶楼 | |
发表时间:2005-08-01
可以自己构造查询对象,把Hibernate3的Projections跟Criteria再封装一层,所实现的动态查询应该可以满足多数需要。用起来就很舒服了……
|
|
返回顶楼 | |