注意:每種查詢方式又含有多種重載的方法,這裏只列出基礎的一種。
Hibernate提供了多種查詢方式:
- Hibernate查詢方式一:get查詢
- Hibernate查詢方式二:load延遲加載
- Hibernate查詢方式三:HQL之createQuery,返回多條數據
- Hibernate查詢方式四:createCriteria查詢,返回多條數據
- Hibernate查詢方式五:HQL之createSQLQuery,根據SQL語句返回數據
package com.ckinghan.test;
import java.util.List;
import org.hibernate.Criteria;
import org.hibernate.Query;
import org.hibernate.SQLQuery;
import org.hibernate.SessionFactory;
import org.hibernate.Transaction;
import org.hibernate.cfg.Configuration;
import org.hibernate.classic.Session;
import org.junit.Test;
import com.ckinghan.bean.User;
/**
* Hibernate提供了多種查詢方式
* @author ckinghan
*/
public class HibernateQueryTest {
/**
* Hibernate查詢方式一:get
*/
@Test
public void HibernateGetQuery(){
Configuration configuration = new Configuration().configure();
SessionFactory buildSessionFactory = configuration.buildSessionFactory();
Session currentSession = buildSessionFactory.getCurrentSession();
Transaction transaction = currentSession.beginTransaction();
Object object = currentSession.get(User.class, 1);
if(object != null && !"".equals(object)){
User user = (User) object;
System.out.println(user);
}
transaction.commit();
buildSessionFactory.close();
}
/**
* Hibernate查詢方式二:load延遲加載
*/
@Test
public void hibernateLoadQuery(){
Configuration configuration = new Configuration().configure();
SessionFactory buildSessionFactory = configuration.buildSessionFactory();
Session currentSession = buildSessionFactory.getCurrentSession();
Transaction transaction = currentSession.beginTransaction();
Object load = currentSession.load(User.class, 1);
if(load != null && !"".equals(load)){
User user = (User) load;
System.out.println(user);
}
transaction.commit();
buildSessionFactory.close();
}
/**
* Hibernate查詢方式三:HQL之createQuery,返回多條數據
*/
@Test
public void hibernateHqlQuery(){
Configuration configuration = new Configuration().configure();
SessionFactory buildSessionFactory = configuration.buildSessionFactory();
Session currentSession = buildSessionFactory.getCurrentSession();
Transaction transaction = currentSession.beginTransaction();
//注意:這裏傳的參數中的User是實體類名
Query createQuery = currentSession.createQuery("from User");
//通過Query類中的list()方法返回list結果集
List<User> users = createQuery.list();
System.out.println(users);
transaction.commit();
buildSessionFactory.close();
}
/**
* Hibernate查詢方式四:createCriteria查詢,返回多條數據
*/
@Test
public void hibernateCriteriaQuery(){
Configuration configuration = new Configuration().configure();
SessionFactory buildSessionFactory = configuration.buildSessionFactory();
Session currentSession = buildSessionFactory.getCurrentSession();
Transaction transaction = currentSession.beginTransaction();
//通過實體類,將對應的數據庫表中的數據全部返回
Criteria createCriteria = currentSession.createCriteria(User.class);
//通過Criteria類提供的list()方法將數據轉換爲List<User>類型
List<User> list = createCriteria.list();
System.out.println(list);
transaction.commit();
buildSessionFactory.close();
}
/**
* Hibernate查詢方式五:HQL之createSQLQuery,根據SQL語句返回數據
*/
@Test
public void hibernateHqlCreateSqlQuery(){
Configuration configuration = new Configuration().configure();
SessionFactory buildSessionFactory = configuration.buildSessionFactory();
Session currentSession = buildSessionFactory.getCurrentSession();
Transaction transaction = currentSession.beginTransaction();
//傳入要查詢的SQL語句
SQLQuery query = currentSession.createSQLQuery("select * from user");
//將查詢到的數據封裝到User實體中
query.addEntity(User.class);
//通過Query的list()方法,返回List<User>
List<User> list = query.list();
System.out.println(list);
transaction.commit();
buildSessionFactory.close();
}
}