關(guān)于HQL查詢,我們可以結(jié)合hibernate的API文檔,重點(diǎn)圍繞org.hibernate.Query接口,分析其方法,此接口的實(shí)例對象是通過通過session、對象的creatQuery(String hql)方法得到的。我這里要分析HQL的select子句,當(dāng)然要想深入HQL查詢,我們就必須了解hibernate緩存的知識。
一、選擇——Select子句查詢返回對象的討論
為什么只說Select子句,因?yàn)槲覀兪褂玫膆ibernate框架是基于java語言環(huán)境下進(jìn)行開發(fā)的,也就是說hibernate是將數(shù)據(jù)庫進(jìn)行了對象化,那么我們使用Select語句查詢到的記錄,返回的是什么對象,這個很讓人感興趣。
首先我們看看在只是用from子句的情況:
package com.third;import java.util.Iterator;import java.util.List;import org.hibernate.Query;import org.hibernate.ScrollableResults;import org.hibernate.Session;import org.hibernate.SessionFactory;import org.hibernate.Transaction;import org.hibernate.cfg.Configuration;import org.hibernate.service.ServiceRegistry;import org.hibernate.service.ServiceRegistryBuilder;import org.junit.After;import org.junit.Before;import org.junit.Test;import com.third.Dao2.Students2;public class Test3 { private static SessionFactory sessionFactory; private static Session session; private static Transaction transaction; @Before public void init(){ //先獲取配置對象,匹配hibernate.cfg.xml文件 Configuration config=new Configuration().configure(); //獲取注冊服務(wù)對象(該對象中包含hibernate.cfg.xml中的<properties>和<maping>信息 ServiceRegistry serviceRegistry=new ServiceRegistryBuilder().applySettings(config.getProperties()).buildServiceRegistry(); //獲取sessionFactory對象,通過sessionFactory對象讀取hibernate.cfg.xml文檔信息,并通過<mapping>標(biāo)簽加載hbm.xml文件信息 sessionFactory=config.