Hibernate温习(4)--三大类查询总结
??Hibernate目前总共分为三大类查询:cretiria,hql,本地sql 【以下篇章搜集于网络,感谢作者】
第一:关于cretiria的查询
?? 具有一个直观的、可扩展的条件查询API是Hibernate的特色。
15.1. 创建一个Criteria 实例
org.hibernate.Criteria接口表示特定持久类的一个查询。Session是 Criteria实例的工厂。
?
Hibernate提供了相当多的内置criterion类型(Restrictions 子类), 但是尤其有用的是可以允许你直接使用SQL。?
?
15.3. 结果集排序
你可以使用org.hibernate.criterion.Order来为查询结果排序。
你可以选择把一个别名指派给一个投影,这样可以使投影值被约束或排序所引用。下面是两种不同的实现方式:?
alias()和as()方法简便的将一个投影实例包装到另外一个 别名的Projection实例中。简而言之,当你添加一个投影到一个投影列表中时 你可以为它指定一个别名:
?
你也可以使用Property.forName()来表示投影:?
15.8. 离线(detached)查询和子查询
DetachedCriteria类使你在一个session范围之外创建一个查询,并且可以使用任意的 Session来执行它。?
9、DML风格的操作(尽量少用,因为和缓存不同步)
Java代码:
?
这个查询指定了:
SQL查询字符串
查询返回的实体
这里,结果集字段名被假设为与映射文件中指明的字段名相同。对于连接了多个表的查询,这就可能造成问题,因为可能在多个表中出现同样名字的字段。下面的方法就可以避免字段名重复的问题:
?
这个查询指定了:
SQL查询语句,它带一个占位符,可以让Hibernate使用字段的别名.
查询返回的实体,和它的SQL表的别名.
addEntity()方法将SQL表的别名和实体类联系起来,并且确定查询结果集的形态。
addJoin()方法可以被用于载入其他的实体和集合的关联.
?
原生的SQL查询可能返回一个简单的标量值或者一个标量和实体的结合体。
??
除此之外,你还可以在你的hbm文件中描述结果集映射信息,在查询中使用。
?
命名SQL查询
可以在映射文档中定义查询的名字,然后就可以象调用一个命名的HQL查询一样直接调用命名SQL查询.在这种情况下,我们不 需要调用addEntity()方法.?
?
?
过奖,都是站在巨人的肩膀上