国产片侵犯亲女视频播放_亚洲精品二区_在线免费国产视频_欧美精品一区二区三区在线_少妇久久久_在线观看av不卡

服務(wù)器之家:專注于服務(wù)器技術(shù)及軟件下載分享
分類導(dǎo)航

PHP教程|ASP.NET教程|Java教程|ASP教程|編程技術(shù)|正則表達(dá)式|C/C++|IOS|C#|Swift|Android|VB|R語言|JavaScript|易語言|vb.net|

服務(wù)器之家 - 編程語言 - Java教程 - Java Hibernate使用SessionFactory創(chuàng)建Session案例詳解

Java Hibernate使用SessionFactory創(chuàng)建Session案例詳解

2021-12-06 12:50xueliangfei Java教程

這篇文章主要介紹了Java Hibernate使用SessionFactory創(chuàng)建Session案例詳解,本篇文章通過簡要的案例,講解了該項(xiàng)技術(shù)的了解與使用,以下就是詳細(xì)內(nèi)容,需要的朋友可以參考下

    SessionFactory在Hibernate中實(shí)際上起到了一個(gè)緩沖區(qū)的作用 他緩沖了HIbernate自動(dòng)生成SQL語句和其他的映射數(shù)據(jù) 還緩沖了一些將來有可能重復(fù)利用的數(shù)據(jù)
    為了能創(chuàng)建一個(gè)SessionFactory對象 應(yīng)該在Hibernate初始化的時(shí)候創(chuàng)建一個(gè)Configuration類的實(shí)例 并將已經(jīng)寫好的映射文件交給他處理 這樣Configuration對象就可以創(chuàng)建一個(gè)SessionFactory對象 當(dāng)SessionFactory對象創(chuàng)建成功后 Configuration對象就沒用用了 就可以簡單的拋棄他
示例代碼:
?
1
2
3
4
Configuration cfg = new Configuration();
cfg.addResource("com/demo/hibernate/beans/User.hbm.xml");
cfg.setProperty(System.getProperties());
SessionFactory sessionFactory = cfg.buildSessionFactory();

SessionFactory用到了一個(gè)設(shè)計(jì)模式 工廠模式 用戶程序從工程類SessionFactory取得Session實(shí)例 設(shè)計(jì)者的意圖就是讓它能在整個(gè)應(yīng)用中共享 典型的來說 一個(gè)項(xiàng)目通常只需要一個(gè)SessionFactory就夠了 因此我們就設(shè)計(jì)了HibernateSessionFactory.java這個(gè)輔助類 定義了一個(gè)靜態(tài)的Configuration和SessionFactory對象

?
1
2
private static final Configuration cfg = new Configuration();
private static org.hibernate.SessionFactory sessionFactory;

這兩個(gè)對象對整個(gè)應(yīng)用來說只有一個(gè)實(shí)例存在 因此為用戶的訪問定義一個(gè)本地線程變量:

?
1
private static final ThreadLocal threadLocal = new ThreadLocal();

該線程變量是靜態(tài)的 對每一個(gè)訪問該線程的用戶產(chǎn)生一個(gè)實(shí)例 這樣在要取得Session對象時(shí) 首先從當(dāng)前用戶的線程中取得Session對象 如果還沒有創(chuàng)建 則從SessionFactory中創(chuàng)建一個(gè)Session 此時(shí)會(huì)判斷SessionFactory對象是否已經(jīng)創(chuàng)建 該對象對這個(gè)應(yīng)用來說 只有一個(gè) 因此 只有第一次訪問該變量的用戶才會(huì)創(chuàng)建該對象

HibernateSessionFactory.java 取得Session對象的過程如下表示

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
public static Session currentSession() throws HibernateException {
        Session session = (Session) threadLocal.get();
 
        if (session == null) {
            if (sessionFactory == null) {
                try {
                    cfg.configure(CONFIG_FILE_LOCATION);
                    sessionFactory = cfg.buildSessionFactory();
                }
                catch (Exception e) {
                    System.err.println("%%%% Error Creating SessionFactory %%%%");
                    e.printStackTrace();
                }
            }
            session = sessionFactory.openSession();
            threadLocal.set(session);
        }
 
        return session;
    }

首先判斷threadLocal中是否存在Session對象 如果不存在 則創(chuàng)建Session對象 在創(chuàng)建Session對象時(shí) 首先要判斷系統(tǒng)是否已經(jīng)加載Configuration 如果沒有sessionFactory 則需要先創(chuàng)建該對象 創(chuàng)建完成的Session對象 需要保存在threadLocal中以供本次訪問線程的下一次調(diào)用

在關(guān)閉Session對象是 只需要從當(dāng)前線程中取得Session對象 關(guān)閉該對象 并置空本地線程變量即可

?
1
2
3
4
5
6
7
8
public static void closeSession() throws HibernateException {
        Session session = (Session) threadLocal.get();
        threadLocal.set(null);
 
        if (session != null) {
            session.close();
        }
    }

到此這篇關(guān)于Java Hibernate使用SessionFactory創(chuàng)建Session案例詳解的文章就介紹到這了,更多相關(guān)Java 使用SessionFactory創(chuàng)建Session內(nèi)容請搜索服務(wù)器之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持服務(wù)器之家!

原文鏈接:http://blog.chinaunix.net/uid-26284395-id-3049145.html

延伸 · 閱讀

精彩推薦
  • Java教程Java8中Stream使用的一個(gè)注意事項(xiàng)

    Java8中Stream使用的一個(gè)注意事項(xiàng)

    最近在工作中發(fā)現(xiàn)了對于集合操作轉(zhuǎn)換的神器,java8新特性 stream,但在使用中遇到了一個(gè)非常重要的注意點(diǎn),所以這篇文章主要給大家介紹了關(guān)于Java8中S...

    阿杜7482021-02-04
  • Java教程20個(gè)非常實(shí)用的Java程序代碼片段

    20個(gè)非常實(shí)用的Java程序代碼片段

    這篇文章主要為大家分享了20個(gè)非常實(shí)用的Java程序片段,對java開發(fā)項(xiàng)目有所幫助,感興趣的小伙伴們可以參考一下 ...

    lijiao5352020-04-06
  • Java教程Java使用SAX解析xml的示例

    Java使用SAX解析xml的示例

    這篇文章主要介紹了Java使用SAX解析xml的示例,幫助大家更好的理解和學(xué)習(xí)使用Java,感興趣的朋友可以了解下...

    大行者10067412021-08-30
  • Java教程升級IDEA后Lombok不能使用的解決方法

    升級IDEA后Lombok不能使用的解決方法

    最近看到提示IDEA提示升級,尋思已經(jīng)有好久沒有升過級了。升級完畢重啟之后,突然發(fā)現(xiàn)好多錯(cuò)誤,本文就來介紹一下如何解決,感興趣的可以了解一下...

    程序猿DD9332021-10-08
  • Java教程Java實(shí)現(xiàn)搶紅包功能

    Java實(shí)現(xiàn)搶紅包功能

    這篇文章主要為大家詳細(xì)介紹了Java實(shí)現(xiàn)搶紅包功能,采用多線程模擬多人同時(shí)搶紅包,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙...

    littleschemer13532021-05-16
  • Java教程小米推送Java代碼

    小米推送Java代碼

    今天小編就為大家分享一篇關(guān)于小米推送Java代碼,小編覺得內(nèi)容挺不錯(cuò)的,現(xiàn)在分享給大家,具有很好的參考價(jià)值,需要的朋友一起跟隨小編來看看吧...

    富貴穩(wěn)中求8032021-07-12
  • Java教程xml與Java對象的轉(zhuǎn)換詳解

    xml與Java對象的轉(zhuǎn)換詳解

    這篇文章主要介紹了xml與Java對象的轉(zhuǎn)換詳解的相關(guān)資料,需要的朋友可以參考下...

    Java教程網(wǎng)2942020-09-17
  • Java教程Java BufferWriter寫文件寫不進(jìn)去或缺失數(shù)據(jù)的解決

    Java BufferWriter寫文件寫不進(jìn)去或缺失數(shù)據(jù)的解決

    這篇文章主要介紹了Java BufferWriter寫文件寫不進(jìn)去或缺失數(shù)據(jù)的解決方案,具有很好的參考價(jià)值,希望對大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望...

    spcoder14552021-10-18
主站蜘蛛池模板: 午夜精品福利网 | 韩国毛片在线观看 | 国产一区免费视频 | 日韩成人影院 | 亚洲一区中文字幕在线观看 | 亚洲成人激情在线观看 | 国产一区二区精品 | 久久久久久免费看 | 一二三区视频 | 91精品国产综合久久久久久 | 一级片在线播放 | 成人亚洲 | 国产一区二区在线免费观看 | 91中文字幕在线观看 | 国产一区在线视频 | 亚洲视频免费在线观看 | 国产高清视频在线 | 亚洲中字幕 | 国产精品久久久久免费a∨ 欧美黄色精品 | 91精品国产一区二区三区四区在线 | 国产精品久久久久久久久久久久 | 国产精品久久久久国产a级 九九在线精品视频 | 日韩在线一区二区三区 | 成人午夜视频网 | 日韩在线永久免费播放 | www.99精品| 欧美电影免费网站 | 成人免费高清 | 精产国产伦理一二三区 | 久久精品| 日韩成人精品在线 | 美女视频一区 | 99精品一区二区三区 | 久久久免费网站 | 综合久久网 | 国产麻豆一区二区三区 | 人人澡人人透人人爽 | 中文字幕一二三区 | 国产精品毛片久久久久久久av | 午夜国产| 国产成人av一区二区三区 |