Hibernate命名查询的配置
将HQL查询语句编写在关系映射文件时,在程序中通过Session的getNameQuery()方法获取该查询语句。
Account.hbm.xml
<!-- 命名查询 -->
<queryname="accountHql"> <!--name属性非常重要,通过name属性可以获得query中的sql or hql语句-->
<![CDATA[fromAccount]]> <!-- CDATA是在告诉xml解析器,不要对其进行解析,而是把当前内容留给其他应用程序 -->
</query>
Hibernate命名查询的应用
命名查询语句可以是HQL语句,也可以是本地SQL语句,代码程序也不区分命名查询语句的类型,一律通过Session的getNameQuery()方法来获得查询语句,具体应用如下:
Queryquery = session.getNamedQuery("queryStudentByCondition");
List list= query.list();
@Test
publicvoid select13() {
Transactiontx = null;
Sessionsession = null;
try{
session= HibernateUtils.getSession();
tx= session.beginTransaction();
Queryquery = session.getNamedQuery("accountHql");
List<Account>list = (List<Account>) query.list();
for(Account ac : list) {
System.out.println(ac);
}
tx.commit();
}catch (HibernateException he) {
if(tx != null) {
tx.rollback();
}
he.printStackTrace();
}finally {
HibernateUtils.closeSession(session);
}
}
}