Hibernate框架——其他查詢方法

Hibernate 框架的查詢方法

​ 除了通過 session.get() 方法進行查詢外,Hibernate 框架還提供了其他的查詢方式

Query 查詢對象

​ query 查詢對象可以通過設置查詢條件進行查詢,使用 HQL 語言(Hibernate Query Language),是 Hibernate 的面向對象查詢語言,最終底層要轉成面向數據庫查詢語言

//1.查詢所有用戶
Query query = session.createQuery("From User");

//2.查詢符合條件得用戶【username 和 password 是 User 對象得屬性,而不是表的字段名】
Query query = session.createQuery("From User where username = ? and password = ?");
query.setParameter(0, "lmh");
query.setParameter(1, "123");

//3.分頁查詢
Query query = session.creatQuery("From User");
query.setMaxResults(3);
query.setFirstResult(3);

Criteria 查詢對象

​ QBC(query by criteria),是 hibernate 提供純面向對象查詢得語言,提供直接使用 PO 對象進行操作

​ PO:persistent object,用於與數據庫交互數據——dao 層(JavaBean + hbm)

​ BO:business object,業務數據對象——service 層

​ VO:value object 值對象——web 層

//Criteria:hibernate 獨創的查詢對象,全程無 hql 語言
Criteria criteria = session.createCriteria(User.class);

//等於 =
criteria.add(Restriction.eq("lmh", "123"));

//like
criteria.add(Restriction.like("lmh", "%123%"));

//..........

SQLQuery 查詢對象

​ SQLQuery:使用原生的 SQL 語句查詢

​ 並不是所有的 sql 都能轉成 hql

SQLQuery query = session.createSQLQuery("select * from t_user");

文件邏輯優化

使用工具類

​ 將重複代碼封裝進工具類中

import org.hibernate.Session;
import org.hibernate.SessionFactory;
import org.hibernate.cfg.Configuration;

public class HibernateUtils {
	private static SessionFactory sf;
	
	static{
		//1.加載配置
		Configuration cfg = new Configuration().configure();
		
		//2.創建一個sessionFactory
		sf = cfg.buildSessionFactory();
		
		//3.在虛擬機關閉時,釋放SessionFactory
		Runtime.getRuntime().addShutdownHook(new Thread(){
			@Override
			public void run() {
				sf.close();
				System.out.println("釋放資源");
			}
		});
		
	}
	
	public static Session openSession(){
		return sf.openSession();
	}
	
	public static Session getCurrentSession(){
		return sf.getCurrentSession();
	}
}
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章