HQL (五) 外置命名查询(sql语句单独保存起来)

外置命名查询
* 在要查询对象对应的映射文件(这里是student.hbm.xml)中采用<query>标签来定义hql

<query name="searchStudents">
<![CDATA[
select s from Student s where s.id<?
]]>
</query>



* 在程序中使用session.getNamedQuery()来得到hql查询串
参见:NameQueryTest.java
package com.wlh.hibernate;

import java.util.Iterator;
import java.util.List;

import junit.framework.TestCase;

import org.hibernate.Session;

public class NameQueryTest extends TestCase{

	public void testQuery1() {
		Session session = null;
		try {
			session = HibernateUtils.getSession();
			session.beginTransaction();
			
			List students=session.getNamedQuery("studentQuery")
								 .setParameter(0, 10)						
								 .list();
			for(Iterator iter=students.iterator();iter.hasNext();){
				Student o=(Student)iter.next();
				System.out.println("name="+o.getName());
			}
			session.getTransaction().commit();
		}catch(Exception e) {
			e.printStackTrace();
			session.getTransaction().rollback();
		}finally {
			HibernateUtils.closeSession(session);
		}
	}	
}

你可能感兴趣的:(java,sql,xml,Hibernate,JUnit)