Hibernate Query language,语法同SQL基本一致,但其中使用的实体类和类的属性,而非表名和表的列名
声明
Query query = session.createQery(String hql);
查询
list
返回List对象
List
iterate
返回Iterator对象
Iterator
list和iterate的区别
list会一次性查询所有结果。
iterate会一次性查询所有主键,并在调用iterator.next()时优先查询缓存中该主键对应的记录。
iterate会更好的利用缓存。
select
选择多个列时,返回List
占位符
?
和PreparedStatement一样,可以使用占位符'?'
设置占位符的值: query.setType(index, value); //index从0开始
使用名称
在需要设置占位符的地方使用 ':占位名'
设置占位名的值: query.setType("占位名", value);
迫切连接
使用join时,只有在调用多方结果实体的具体属性时才会真正进行查询。
可使用迫切内连接一次性取出所有对象
在join后添加fetch关键词
命名的HQL
配置
可在配置文件中定义HQL后再代码中调用
语句]]>
调用
Query query = session.getNameQuery("命名");