hibernate 学习笔记四
高级查询
------------
Hibernate中的检索方式
1、导航对象图检索(通过已获取到的对象,来检索其相关联的对象,如:获取到customer后,通过customer.getOrders()获取Order对象)
2、OID检索(明确知道对象的OID时,借助get(),load()进行检索)
3、HQL检索(用QUERY操作HQL进行检索)
步骤:
a、创建Query对象,session.createQuery(hql)
b、动态绑定参数(位置标识法,名字标识法)
c、获取数据(list(),iterate(),uniqueResult())
4、 QBC检索
通过QBC(Query By Criteria)API进行检索
擅长动态查询
步骤:
a、创建Criteria对象,session.createCriteria()
b、设置查询条件、绑定参数(criteria.Expression())
c、load()、uniqueResult()获取数据
QBE检索(Query By Example)
5、本地SQL检索
String sql = "select id,name,age from hedong_student where name = ?";
SQLQuery query = session.createSQLQuery(sql);
query.addScalar("id",Hibernate.INTEGER);
query.addScalar("name",Hibernate.STRING);
query.addScalar("age",Hibernate.INTEGER);
query.setString(0,"briup1")
多态查询
查询本类,连同子类一起查出
投影查询
查询类对象的部分属性信息
select id,name,from Student;
...
while(...){
(Object)it.next();
}
注意:在遍历集合、转换类型时,应该强转为Object[]
集合过滤
session.createFilter()