<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    瘋狂

    STANDING ON THE SHOULDERS OF GIANTS
    posts - 481, comments - 486, trackbacks - 0, articles - 1
      BlogJava :: 首頁(yè) :: 新隨筆 :: 聯(lián)系 :: 聚合  :: 管理

    connection.release_mode

    Posted on 2011-07-27 11:15 瘋狂 閱讀(3770) 評(píng)論(0)  編輯  收藏 所屬分類(lèi): hibernate

    org.hibernate.connection包的主要封裝了通過(guò)JDBC來(lái)連接數(shù)據(jù)庫(kù)的操作,用戶(hù)可以以數(shù)據(jù)源的方式,或者通過(guò)特定數(shù)據(jù)庫(kù)驅(qū)動(dòng)的方式,甚至是自己定義連接類(lèi)的方式來(lái)完成數(shù)據(jù)庫(kù)的連接操作,包下面的代碼文件并不多,只有5個(gè),分別是ConnectionProviderFactory.java,ConnectionProvider.java,DriverManagerConnectionProvider.java,DatasourceConnectionProvider.java,UserSuppliedConnectionProvider.java,其中ConnectionProvider是一個(gè)接口,DriverManagerConnectionProvider、DatasourceConnectionProvider、UserSuppliedConnectionProvider分別繼承了這個(gè)接口,而ConnectionProviderFactory則是一個(gè)工廠類(lèi),他的主要作用是調(diào)用ConnectionProvider接口,而不關(guān)心接口的具體實(shí)現(xiàn)是DriverManagerConnectionProvider或者DatasourceConnectionProvider還是UserSuppliedConnectionProvider。

        首先來(lái)看ConnectionProvider接口,提供了如下幾個(gè)方法:    

    1.configure()方法主要是根據(jù)配置文件來(lái)初始化所有的連接信息。    

    2.getConnection()方法抓取一個(gè)連接。    

    3.closeConnection(Connection conn)方法關(guān)閉某個(gè)特定連接。    

    4.close()關(guān)閉所有連接。    

    5.supportsAggressiveRelease()方法和hibernate.connection.release_mode配置參數(shù)有關(guān),該參數(shù)用來(lái)指定使用哪一種連接釋放模式。HIBERNATE參考手冊(cè)是這樣描的:     Hibernate關(guān)于JDBC連接管理的舊(2.x)行為是,Session在第一次需要的時(shí)候獲取一個(gè)連接,在session關(guān)閉之前一直會(huì)持有這個(gè)連接。Hibernate引入了連接釋放的概念,來(lái)告訴session如何處理它的JDBC連接。注意,下面的討論只適用于采用配置ConnectionProvider來(lái)提供連接的情況,用戶(hù)自己提供的連接與這里的討論無(wú)關(guān)。通過(guò)org.hibernate.hibernate.connection.release_mode的不同枚舉值來(lái)使用不用的釋放模式:     

         ON_CLOSE - 基本上就是上面提到的老式行為。Hibernate session在第一次需要進(jìn)行JDBC操作的時(shí)候獲取連接,然后持有它,直到session關(guān)閉。

         AFTER_TRANSACTION - 在org.hibernate.Transaction結(jié)束后釋放連接。

         AFTER_STATEMENT (也被稱(chēng)做積極釋放) - 在每一條語(yǔ)句被執(zhí)行后就釋放連接。但假若語(yǔ)句留下了與session相關(guān)的資源,那就不會(huì)被釋放。目前唯一的這種情形就是使用org.hibernate.ScrollableResults  

         auto(默認(rèn)) - 這一選擇把釋放模式委派給org.hibernate.transaction.TransactionFactory.getDefaultReleaseMode()方法。對(duì)JTATransactionFactory來(lái)說(shuō),它會(huì)返回hibernate.connection.release_mode.AFTER_STATEMENT;對(duì)JDBCTransactionFactory來(lái)說(shuō),則是hibernate.connection.release_mode.AFTER_TRANSACTION。很少需要修改這一默認(rèn)行為,因?yàn)榧偃粼O(shè)置不當(dāng),就會(huì)帶來(lái)bug,或者給用戶(hù)代碼帶來(lái)誤導(dǎo)。

         on_close - 使用 hibernate.connection.release_mode.ON_CLOSE. 這種方式是為了向下兼容的,但是已經(jīng)完全不被鼓勵(lì)使用了。

         after_transaction - 使用hibernate.connection.release_mode.AFTER_TRANSACTION。這一設(shè)置不應(yīng)該在JTA環(huán)境下使用。也要注意,使用hibernate.connection.release_mode.AFTER_TRANSACTION的時(shí)候,假若session 處于auto-commit狀態(tài),連接會(huì)像AFTER_STATEMENT那樣被釋放。

         after_statement - 使用hibernate.connection.release_mode.AFTER_STATEMENT。除此之外,會(huì)查詢(xún)配置的ConnectionProvider,是否它支持這一設(shè)置((supportsAggressiveRelease()))。假若不支持,釋放模式會(huì)被設(shè)置為hibernate.connection.release_mode.AFTER_TRANSACTION。只有在你每次調(diào)用ConnectionProvider.getConnection()獲取底層JDBC連接的時(shí)候,都可以確信獲得同一個(gè)連接的時(shí)候,這一設(shè)置才是安全的;或者在auto-commit環(huán)境中,你可以不管是否每次都獲得同一個(gè)連接的時(shí)候,這才是安全的。也就是說(shuō)supportsAggressiveRelease()返回false的時(shí)候,釋放模式會(huì)被設(shè)置為hibernate.connection.release_mode.AFTER_TRANSACTION。如果返回true,只表示它支持使用hibernate.connection.release_mode.AFTER_STATEMENT這一個(gè)設(shè)置,并不表示一定使用這個(gè)設(shè)置,請(qǐng)注意。

    主站蜘蛛池模板: 亚洲一区二区在线免费观看| 久久国产免费一区二区三区| 亚洲成年人电影在线观看| 亚洲午夜av影院| 免费特级黄毛片在线成人观看| 亚在线观看免费视频入口| 国产福利在线观看永久免费| 亚洲aⅴ天堂av天堂无码麻豆| 91嫩草亚洲精品| 久久综合亚洲色一区二区三区| 亚洲日韩精品一区二区三区 | 久久青青成人亚洲精品| 亚洲AV永久无码精品一区二区国产| 国产a视频精品免费观看| 久草免费福利资源站| 中文字幕看片在线a免费| 人禽伦免费交视频播放| 国产成人综合亚洲绿色| 亚洲国产欧美一区二区三区| 亚洲国产日韩综合久久精品| 亚洲一线产区二线产区精华| 亚洲国产综合在线| 久久亚洲AV成人无码| 久久久久亚洲AV无码麻豆| 亚洲一二成人精品区| 久久精品国产亚洲av麻豆| 亚洲欧洲第一a在线观看| 亚洲av无码精品网站| 亚洲av无码国产精品夜色午夜| 国产成人精品日本亚洲网站| 在线观看亚洲精品国产| 国产国拍精品亚洲AV片| 日本亚洲视频在线| 精品亚洲成a人片在线观看少妇 | 99久久免费看国产精品| 最刺激黄a大片免费网站| 日韩在线播放全免费| 人禽杂交18禁网站免费| 精品国产一区二区三区免费看| 日本无吗免费一二区| 一本久久综合亚洲鲁鲁五月天|