博為峰Java技術(shù)文章 ——JavaEE Hibernate初始化類

博為峰小博老師

Session對象是Hibernate中數(shù)據(jù)庫持久化操作的核心,它負(fù)責(zé)Hibernate所有的持久化操作,通過它開發(fā)人員可以實現(xiàn)數(shù)據(jù)庫基本的增、刪、查、改的操作。而Session對象又是通過SessionFactory對象獲取的,可以通過Configuration對象創(chuàng)建SessionFactory,關(guān)健代碼如下:

Configuration對象會加載Hibernate的基本配置信息,如果沒有在configure()方法中指定加載配置XML文檔的路徑信息,Configuration對象會默認(rèn)加載項目classpath根目錄下的hibernate.cfg.xml文件。

創(chuàng)建HibernateUtil類,用于實現(xiàn)對Hibernate的初始化。代碼如下:

publicclassHibernateUtil {

privatestaticStringCONFIG_FILE_LOCATION="/hibernate.cfg.xml";

privatestaticfinalThreadLocalthreadLocal=newThreadLocal();

privatestaticConfigurationconfiguration=newConfiguration();

privatestaticorg.hibernate.SessionFactorysessionFactory;//SessionFactory對象

privatestaticStringconfigFile=CONFIG_FILE_LOCATION;

static{

try{

configuration.configure(configFile);//加載Hibernate配置文件

sessionFactory=configuration.buildSessionFactory();

}catch(Exception e) {

System.err

.println("%%%% Error Creating SessionFactory %%%%");

e.printStackTrace();

}

}

/**

*獲取Session

*/

publicstaticSession getSession()throwsHibernateException {

Session session = (Session)threadLocal.get();

if(session ==null|| !session.isOpen()) {

if(sessionFactory==null) {

rebuildSessionFactory();

}

session = (sessionFactory!=null) ?sessionFactory.openSession()

:null;

threadLocal.set(session);

}

returnsession;

}

/**

*重建會話工廠

*/

publicstaticvoidrebuildSessionFactory() {

try{

configuration.configure(configFile);

sessionFactory=configuration.buildSessionFactory();

}catch(Exception e) {

System.err.println("%%%% Error Creating SessionFactory %%%%");

e.printStackTrace();

}

}

/**

*獲取SessionFactory對象

*/

publicstaticSessionFactory getSessionFactory(){

returnsessionFactory;

}

/**

*關(guān)閉Session

*/

publicstaticvoidcloseSession()throwsHibernateException {

Session session = (Session)threadLocal.get();

threadLocal.set(null);

if(session !=null) {

session.close();

}

}

}

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • 本文包括: 1、CRM 項目的整體介紹 2、Hibernate 框架概述 3、Hibernate 快速入門 4、H...
    廖少少閱讀 3,526評論 9 66
  • Hibernate: 一個持久化框架 一個ORM框架 加載:根據(jù)特定的OID,把一個對象從數(shù)據(jù)庫加載到內(nèi)存中OID...
    JHMichael閱讀 2,093評論 0 27
  • 1. Java基礎(chǔ)部分 基礎(chǔ)部分的順序:基本語法,類相關(guān)的語法,內(nèi)部類的語法,繼承相關(guān)的語法,異常的語法,線程的語...
    子非魚_t_閱讀 34,673評論 18 399
  • 目錄 1. Hibernate框架的概述 1.1 Hibernate簡介 1.2 為什么要學(xué)習(xí)Hibernate ...
    深海魚Q閱讀 1,119評論 0 14
  • 本文包括:1、Hibernate的持久化類2、Hibernate 持久化對象的三個狀態(tài)(難點)3、Hibernat...
    廖少少閱讀 1,588評論 0 13

友情鏈接更多精彩內(nèi)容