<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>

                企業??AI智能體構建引擎,智能編排和調試,一鍵部署,支持知識庫和私有化部署方案 廣告
                Hibernate建立數據庫連接的時序圖如下: ![](https://box.kancloud.cn/04768a345b93e642ac337f55b348110a_772x576.png) 我們簡單解釋以下幾點: * 1,2,3,4,5,6,7,8的目的在于獲取一個用于可以制造session(會話)的工廠,即sessionFactory。可以認為這是固有的寫法。 * 每個數據庫都對應一個sessionFactory。所以在一般的程序中,如果只涉及到對一個數據表進行操作,那么僅僅需要一個sessionFactory. * 通過sessionFactory可以獲取到用于連接數據庫信息的session(會話)。一個sessionFactory可以制造N個session。每個session都可以起到與數據庫進行會話的作用。 * 往往我們通過sessionFactory只獲取一個(session)對話。 * 數據的提交采用的是事務。什么是事務呢?簡單的理解為,事務是一系列的數據表操作。即一個事務,對應著先后執行N條SQL語句。采用事務的好處就是,如果多條語句中,有一條沒有成功執行,事務會自動的進行回滾操作。 * 比如在銀行轉賬時,張三轉錢給李四,那么我們需要增加李四的錢的同時減少張三的錢。 * 我們把這樣兩條SQL語句放到事務中,由事務進行提交執行。 * 假設增加李四的錢的操作被正常的執行了,而執行減少張三的錢的時候,恰恰發生了錯誤。 * 這時,事務監測到了這個錯誤,從而回滾增加李四錢的操作。 * 最終達到了:發生錯誤時,李四的錢不增多,張三的錢不減少。 * Hibernate進行了惰性連接處理。在開啟事務時,才會嘗試對數據庫進行連接。 > 想測試配置信息是否正確,則必須執行至開啟事務。 # 測試 ``` package hibernate; import org.hibernate.Session; import org.hibernate.SessionFactory; import org.hibernate.cfg.Configuration; import org.hibernate.service.ServiceRegistry; import org.hibernate.service.ServiceRegistryBuilder; import org.junit.Test; import java.util.List; import java.util.Properties; public class TestCfgXml { @Test public void TestConfig() { try { // 實例化 Configuration configuration = new Configuration(); // 加載數據庫配置文件 configuration.configure(); // 讀取數據庫配置信息 Properties configs = configuration.getProperties(); // 實例化服務注冊對象構造器(用于構造服務對象) ServiceRegistryBuilder serviceRegistryBuilder = new ServiceRegistryBuilder(); // 傳入數據庫配置信息 serviceRegistryBuilder.applySettings(configs); // 構造服務注冊對象 ServiceRegistry serviceRegistry = serviceRegistryBuilder .buildServiceRegistry(); // 創建會話工廠(session factory)) SessionFactory sessionFactory = configuration .buildSessionFactory(serviceRegistry); // 創建會話(這里的session也是會話的意思,我們以前接觸的http中的session,處理的是用戶與服務器的對話) Session session = sessionFactory.getCurrentSession(); // 開啟事務(使用緩沖池進行數據庫的連接) session.beginTransaction(); // 關閉session session.close(); } catch (Exception e) { System.out.println("發生錯誤:"); System.out.println(e); } } } ``` 此時,我們在hibrenate.cfg.xml中將數據庫名javaee更改為javaee1,再進行測試。將得到如下錯誤: ``` ERROR: Unknown database 'javaee1' 發生錯誤: org.hibernate.exception.SQLGrammarException: Could not open connection ``` 提示我們數據庫未找到。當然了,我們還可以更改其它的配置選項,來查看具體的配置信息錯誤時的出錯信息. ## 參考資料: sesssion與sessionFactory: [http://blog.csdn.net/jiangxindu1/article/details/48037731](http://blog.csdn.net/jiangxindu1/article/details/48037731) [https://docs.jboss.org/hibernate/orm/3.5/reference/zh-CN/html/transactions.html](https://docs.jboss.org/hibernate/orm/3.5/reference/zh-CN/html/transactions.html) 事務: [http://www.jianshu.com/p/eb150b4f7ce0](http://www.jianshu.com/p/eb150b4f7ce0)
                  <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>

                              哎呀哎呀视频在线观看