全國(guó)咨詢(xún)/投訴熱線:400-618-4000

首頁(yè)常見(jiàn)問(wèn)題正文

Hibernate框架入門(mén):SessionFactory接口讀取并映射文件

更新時(shí)間:2024-01-24 來(lái)源:黑馬程序員 瀏覽量:

IT培訓(xùn)班

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

  通常所使用的SessionFactory實(shí)例是通過(guò)Configuration對(duì)象獲取的,其獲取方法如下所示:

SessionFactory sessionFactory=config.buildSessionFactory();

  SessionFactory具有以下特點(diǎn)。

  ·它是線程安全的,它的同一個(gè)實(shí)例能夠供多個(gè)線程共享。

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

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

  文件23-5 HibernateUtils.java

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

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

分享到:
在線咨詢(xún) 我要報(bào)名
和我們?cè)诰€交談!