hibernate数据查询的几种方式

1.使用主键id加载对象(load(),get());

2.通过对象导航,比如通过stu.getTeam()得到team的实例;

3 使用hql;

4使用qbc(query by criteria)

5直接使用sql语句取得记录集;

一般都使用后面三种方式.

注意.hql是面向对象的查询.语法和sql是基本一样的.不区分大小写的,但是注意的是对与对象.必须遵循对象的大小写.因为hql是对像查询..同时我们必须清楚.hql只能取得对象,而不支持uid(update,insert.delete)

...........................................(具体的讲解详见查考书)

小结:

hql功能很强大,适合各种情况,但是动态条件查询构造起来很不方便.

criteria 最适合动态查询,但不太适合统计查询,qbe还不够强大.只适合简单的查询.

nativesql可以实现特定的数据库的sql.但是可移植性并不好.

针对web应用来说,大部分常规查询都是动态条件查询,所以首先criteria,并且h 3提供的detachedcriteria,可以在web层构造好detachedcriteria再进入session执行查询.但是涉及到统计查询和非常复杂的关联查询.criteria就无能为力了.这种情况下选择使用hql.最后如果涉及到使用某些数据库的特性的时候,就只有选择nativesql了.

hql常用来进行实体检索.这个时候要注意返回的list中的元素是实体还是实体数组.如果hql进行实体属性查询,当查询两个以上的属性时,list中的元素就是属性数组了.

qbc最大的用途在与动态查询.它不会忽略配置文件中的预先抓取策略.

使用本地sql检索必须检索对象的所有属性.

posted @ 2010-04-19 00:56  小白熊  阅读(311)  评论(0编辑  收藏  举报