<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 :: 首頁 :: 新隨筆 :: 聯系 :: 聚合  :: 管理

    connection.release_mode

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

    org.hibernate.connection包的主要封裝了通過JDBC來連接數據庫的操作,用戶可以以數據源的方式,或者通過特定數據庫驅動的方式,甚至是自己定義連接類的方式來完成數據庫的連接操作,包下面的代碼文件并不多,只有5個,分別是ConnectionProviderFactory.java,ConnectionProvider.java,DriverManagerConnectionProvider.java,DatasourceConnectionProvider.java,UserSuppliedConnectionProvider.java,其中ConnectionProvider是一個接口,DriverManagerConnectionProvider、DatasourceConnectionProvider、UserSuppliedConnectionProvider分別繼承了這個接口,而ConnectionProviderFactory則是一個工廠類,他的主要作用是調用ConnectionProvider接口,而不關心接口的具體實現是DriverManagerConnectionProvider或者DatasourceConnectionProvider還是UserSuppliedConnectionProvider。

        首先來看ConnectionProvider接口,提供了如下幾個方法:    

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

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

    3.closeConnection(Connection conn)方法關閉某個特定連接。    

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

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

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

         AFTER_TRANSACTION - 在org.hibernate.Transaction結束后釋放連接。

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

         auto(默認) - 這一選擇把釋放模式委派給org.hibernate.transaction.TransactionFactory.getDefaultReleaseMode()方法。對JTATransactionFactory來說,它會返回hibernate.connection.release_mode.AFTER_STATEMENT;對JDBCTransactionFactory來說,則是hibernate.connection.release_mode.AFTER_TRANSACTION。很少需要修改這一默認行為,因為假若設置不當,就會帶來bug,或者給用戶代碼帶來誤導。

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

         after_transaction - 使用hibernate.connection.release_mode.AFTER_TRANSACTION。這一設置不應該在JTA環境下使用。也要注意,使用hibernate.connection.release_mode.AFTER_TRANSACTION的時候,假若session 處于auto-commit狀態,連接會像AFTER_STATEMENT那樣被釋放。

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

    主站蜘蛛池模板: 野花高清在线观看免费3中文| 免费a级毛片高清视频不卡| 亚洲精品中文字幕无码AV| 国产一卡二卡3卡四卡免费| 久久精品国产亚洲av品善| 亚洲区小说区激情区图片区| 亚洲毛片网址在线观看中文字幕| 国产精品免费久久久久电影网| 亚洲精品无码不卡| a级男女仿爱免费视频| 亚洲日本视频在线观看| 成人亚洲综合天堂| 一个人晚上在线观看的免费视频| 国产又黄又爽又刺激的免费网址 | 日本人成在线视频免费播放| 久久精品国产亚洲αv忘忧草| 亚洲精品成人区在线观看| 精品国产sm捆绑最大网免费站| 亚洲人成网www| 免费在线看片网站| 男女做羞羞的事视频免费观看无遮挡| 国产精品亚洲一区二区无码| 免费在线精品视频| 成人无码区免费A片视频WWW | 国产精品久久永久免费| 中美日韩在线网免费毛片视频 | 亚洲夂夂婷婷色拍WW47| 久久精品亚洲中文字幕无码网站| 成年美女黄网站18禁免费| 亚洲第一第二第三第四第五第六| 亚洲AV无码专区电影在线观看| 俄罗斯极品美女毛片免费播放| 免费观看激色视频网站bd| 国产免费伦精品一区二区三区| 亚洲AV无码一区二区三区电影| 亚洲狠狠ady亚洲精品大秀| 国产亚洲老熟女视频| 国产一级淫片a免费播放口之| 国产情侣激情在线视频免费看| 国产成人免费ā片在线观看老同学| MM1313亚洲国产精品|