<ruby id="bdb3f"></ruby>

    <p id="bdb3f"><cite id="bdb3f"></cite></p>

      <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
        <p id="bdb3f"><cite id="bdb3f"></cite></p>

          <pre id="bdb3f"></pre>
          <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

          <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
          <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

          <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                <ruby id="bdb3f"></ruby>

                合規國際互聯網加速 OSASE為企業客戶提供高速穩定SD-WAN國際加速解決方案。 廣告
                [TOC] # 事務隔離級別 在配置文件中,可以設置事務的隔離級別. 具體是在hibernate.cfg.xml文件中`<session-factory>`標簽中進行的 ~~~ <!-- 事務隔離級別 hibernate.connection.isolation = 4 1. Read uncommitted isolation 2. Read committed isolation 4. Repeatable read isolation 8. Serializable isolation --> <property name="hibernate.connection.isolation">4</property> ~~~ 設置了事務的隔離級別,那么在真正的事務管理的時候,需要考慮事務的應用場景, 也就是說我們事務控制不應該在DAO層實現,應該在service層實現,并且在service層調用多個DAO,實現一個業務邏輯 具體操作如下: Hibernate提供了三種管理session的方式: 1. Session對象的生命周期與本地線程綁定(ThreadLocal) 2. Session對象的生命周期與JTA事務綁定(分布式事務管理) 3. Hibernate委托程序來管理Session的生命周期 我們之前所使用的是第三種 ,通過程序獲取一個Session對象,使用它,最后session.close(); 在實際開發中我們一般使用的是前兩種: 主要介紹關于本地線程綁定Session。 步驟: 1. 需要在hibernate.cfg.xml文件配置 ~~~ <property name="hibernate.current_session_context_class">thread</property> ~~~ 2. 在獲取session時不要使用openSession而是使用getCurrentSession()方法 ~~~ sessionFactory.getCurrentSession(); ~~~ ~~~ //測試session綁定到線程中 //這時每次獲取到的都是一個新的session Session s1 = HibernateUtils.openSession(); Session s2 = HibernateUtils.openSession(); System.out.println(s1 == s2); Session s3 = HibernateUtils.getCurrentSession(); Session s4 = HibernateUtils.getCurrentSession(); System.out.println(s3 == s4); ~~~ # getCurrentSession使用時的注意事項 ~~~ Session session = HibernateUtils.getCurrentSession(); session.beginTransaction(); Customer c = session.get(Customer.class, 1); System.out.println(c); session.getTransaction().commit(); session.close(); ~~~ 上述代碼會產生問題 ~~~ org.hibernate.SessionException: Session was already closed at org.hibernate.internal.SessionImpl.close(SessionImpl.java:411) ~~~ 原因: 使用getCurrentSession獲取的與線程綁定的session對象,在事務關閉時,session對象也會close,簡單說:就不需要我們再手動close
                  <ruby id="bdb3f"></ruby>

                  <p id="bdb3f"><cite id="bdb3f"></cite></p>

                    <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
                      <p id="bdb3f"><cite id="bdb3f"></cite></p>

                        <pre id="bdb3f"></pre>
                        <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

                        <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
                        <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

                        <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                              <ruby id="bdb3f"></ruby>

                              哎呀哎呀视频在线观看