6.4.12:命名HQL查询

HQL查询还支持将查询所用的HQL语句放入配置文件中,而不是代码中。通过这种方式,可以大大提高程序的解耦。

在Hibernate映射文件的<hibernate-mapping.../>元素中使用<query.../>子元素来定义命名查询,使用<query.../>元素只需要指定一个name属性,指定该命名查询的名字。该元素的内容就是命名查询的HQL语句。下面是定义命名查询的配置文件片段:

<query name="myNamedQuery">
    from Person as p where p.age>?
</query>
Session里提供了一个 getNamedQuery(String name)方法,该方法用于创建一个Query对象,一旦获得了Query对象,剩下的操作与普通的HQL查询完全一样。

Transaction txt=session.beginTransaction();
System.out.println("===执行命名查询===");
List list=session.getNamedQuery("myNamedQuery").setInteger(0,20).list();
for(Iterator it=list.iterator();it.hasNext();){
Person p=(Person) it.next();
System.out.println(p.getName());
}
txt.commit();
可以看出,使用命名查询与普通查询的效果基本相似,只是将原来的 createQuery(String hql)方法换成了getNamedQuery(String name),剩下的事情几乎完全一样。实际上,命名查询的作用仅仅是将HQL语句从Java代码中提取出来,放到映射文件中配置而已。当应用需要修改查询语句时,开发者无须打开Java代码进行修改,直接修改配置文件中的查询语句即可。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值