首頁常見問題正文

Hibernate框架入門:SessionFactory接口讀取并映射文件

更新時間:2024-01-24 來源:黑馬程序員 瀏覽量:

IT培訓班

  SessionFactory接口負責讀取并解析映射文件,以及建立Session對象,它在Hibernate中起到一個緩沖區(qū)的作用,會將Configuration對象中的所有配置信息、Hibernate自動生成的SQL語句以及某些可重復利用的數(shù)據(jù)加載到緩沖區(qū)中。同時,它還維護了Hibernate的二級緩存。

  通常所使用的SessionFactory實例是通過Configuration對象獲取的,其獲取方法如下所示:

SessionFactory sessionFactory=config.buildSessionFactory();

  SessionFactory具有以下特點。

  ·它是線程安全的,它的同一個實例能夠供多個線程共享。

  ·它是重量級的,不能隨意創(chuàng)建和銷毀它的實例。

  由于SessionFactory是一個重量級的對象,占用的內(nèi)存空間較大,所以通常情況下,一個應用程序只需要一個SessionFactory實例,只有應用中存在多個數(shù)據(jù)源時,才為每個數(shù)據(jù)源建立一個SessionFactory實例。為此,在實際開發(fā)中,通常會抽取出一個工具類提供Session對象。下面就介紹一個簡單的抽取方式,如文件23-5所示。

  文件23-5 HibernateUtils.java

public class HibernateUtils {
    //聲明一個私有的靜態(tài)final類型的Configuration對象
    private static final Configuration config;
    //聲明一個私有的靜態(tài)final類型SessionFactory對象
    private static final SessionFactory factory;
    //通過靜態(tài)代碼塊構建SessionFactory
    static {
        config=new Configuation().configure();
        factory=config.buildSessionFactory();
    }
    //提供一個公有的靜態(tài)方法供外部獲取,并返回一個session對象
    public static Session getSession() {
        return factory.openSession();
    }
}

  在文件23-5中,首先聲明了一個私有的靜態(tài)final類型的Configuration對象和SessionFactory對象,供類中的其他成員使用,下面通過靜態(tài)方法構建了SessionFactory實例,最后提供了一個公有的靜態(tài)方法供外部獲取session對象。使用此工具類,就可以直接通過HibernateUtils.getSession()的方式獲取session對象。

分享到:
在線咨詢 我要報名
和我們在線交談!