Hibernate核心API(Notes)

Configuration類:

Configuration對象用於配置和啓動Hibernate。Hibernate應用通過Configuration實例來指定對象-關係映射文件的位置或者動態配置Hibernate的屬性,然後創建SessionFactory實例。

SessionFactory接口:

一個SessionFactory實例對應一個數據存儲源。應用從SessionFactory中獲取Session實例。

所以這裏SessionFactory我們可以使用單例!

// single 
	private static final SessionFactory sessionFactory;
	
	static{
		try{
			//讀取映射的配置文件
		sessionFactory=new Configuration().configure().buildSessionFactory();
		}catch (Throwable e) {
			// TODO: handle exception
			throw new ExceptionInInitializerError(e);
		}
	}
	
	// static method to get session
	public static Session getSession() throws HibernateException{
		
		return sessionFactory.openSession();
		
	}
	
	// close session factory
	public static void closeSessionFactory(){
		
		sessionFactory.close();
		
	}


1)它是線程安全的,這意味着它的一個實例能夠被應用的多個線程共享。

2)它是重量級的,這意味着不能隨意創建或者銷燬,一個數據庫只對應一個SessionFactory。

通常構建SessionFactory是在某對象Bean的靜態初始化代碼塊中進行。

如果應用只是訪問一個數據庫,只需創建一個SessionFactory實例,並且在應用初始化的時候創建該實例。

如果應用有同時訪問多個數據庫,則需爲每個數據庫創建一個單獨的SessionFactory。

Session接口:

是Hibernate應用最廣泛的接口。它提供了和持久化相關的操作,如添加,刪除,更改,加載和查詢對象。

1)它是線程不安全的,因此在設計軟件架構時,應儘量避免多個線程共享一個Session實例。

2)Session實例是輕量級的,這意味着在程序可以經常創建和銷燬Session對象,

例如爲每個客戶請求分配單獨的Session實例。

原則:一個線程一個Session;一個事務一個Session。

Transaction接口:

是Hibernate的事務處理接口,它對底層的事務接口進行封裝。

Query和Criteria接口:

這兩個是Hibernate的查詢接口,用於向數據庫查詢對象,以及控制執行查詢的過程。

Query實例包裝了一個HQL查詢語句。

Criteria接口完全封裝了基於字符串形式的查詢語句,比Query接口更面向對象。Criteria更擅長於執行動態查詢。

補充:find方法也提供數據查詢功能,但只是執行一些簡單的HQL查詢語句的快捷方式(已過時),遠沒有Query接口強大!

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章