2011年2月26日 星期六

Hibernate 教學 - Session 與 SessionFactory

SessionFactory
通常在應用程式裡面是透過 SessionFactory 來獲取一個 Session 物件

且 SessionFactory 保存了產生 SQL 的語句以及 Hibernate 運行時所有的映射關係

而在一般的情況下,整個應用程式只有一個 SessionFactory

所以通常會在應用程式初始的時候,執行 SessionFactory 的創建,以便後續各模組使用

例如以下程式表示

package org.control;
import org.hibernate.cfg.Configuration;
import org.hibernate.SessionFactory;
public class HibernateUtil {
    private static final SessionFactory sessionFactory;   //將 SessionFactory 宣告為靜態變數
    static {
        try {
            sessionFactory = new Configuration().configure().buildSessionFactory();
        } catch (Throwable ex) {
            // Log the exception. 
            System.err.println("Initial SessionFactory creation failed." + ex);
            throw new ExceptionInInitializerError(ex);
        }
    }
    //之後的任何程式或模組需要取的 session 時, 就可以共通的取用此 SessionFactory
    public static SessionFactory getSessionFactory() {
        return sessionFactory;
    }
}

SessionFactory 是由 Configuration 所創建的,而 Configuration 代表即是 Hibernate 的配置文件

所以實際上即是對 SessionFactory 進行配置,譬如說讓 SessionFactory 知道目前 Hibernate 有多少映射關係

Session 
Session 並不是線程安全的,其代表了與資料庫之間的一次性操作

而Session 也可稱為持久化的管理器,通常每個 Session 內部會有一個快取區

裡面存放的所有物件都為持久(永續)狀態的,可稱為永續環境

Session 是透過 SessionFactory  來開啟,使用完畢後記得須關閉

沒有留言:

張貼留言