更新時間:2024-01-24 來源:黑馬程序員 瀏覽量:
IT就到黑馬程序員.gif)
SessionFactory接口負(fù)責(zé)讀取并解析映射文件,以及建立Session對象,它在Hibernate中起到一個緩沖區(qū)的作用,會將Configuration對象中的所有配置信息、Hibernate自動生成的SQL語句以及某些可重復(fù)利用的數(shù)據(jù)加載到緩沖區(qū)中。同時,它還維護(hù)了Hibernate的二級緩存。
通常所使用的SessionFactory實例是通過Configuration對象獲取的,其獲取方法如下所示:
SessionFactory sessionFactory=config.buildSessionFactory();
SessionFactory具有以下特點。
·它是線程安全的,它的同一個實例能夠供多個線程共享。
·它是重量級的,不能隨意創(chuàng)建和銷毀它的實例。
由于SessionFactory是一個重量級的對象,占用的內(nèi)存空間較大,所以通常情況下,一個應(yīng)用程序只需要一個SessionFactory實例,只有應(yīng)用中存在多個數(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)代碼塊構(gòu)建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)方法構(gòu)建了SessionFactory實例,最后提供了一個公有的靜態(tài)方法供外部獲取session對象。使用此工具類,就可以直接通過HibernateUtils.getSession()的方式獲取session對象。
1024首播|39歲程序員逆襲記:不被年齡定義,AI浪潮里再迎春天
2025-10-241024程序員節(jié)丨10年同行,致敬用代碼改變世界的你
2025-10-24【AI設(shè)計】北京143期畢業(yè)僅36天,全員拿下高薪offer!黑馬AI設(shè)計連續(xù)6期100%高薪就業(yè)
2025-09-19【跨境電商運營】深圳跨境電商運營畢業(yè)22個工作日,就業(yè)率91%+,最高薪資達(dá)13500元
2025-09-19【AI運維】鄭州運維1期就業(yè)班,畢業(yè)14個工作日,班級93%同學(xué)已拿到Offer, 一線均薪資 1W+
2025-09-19【AI鴻蒙開發(fā)】上海校區(qū)AI鴻蒙開發(fā)4期5期,距離畢業(yè)21天,就業(yè)率91%,平均薪資14046元
2025-09-19