<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引出 曾學過三層架構,三層分別為界面層、業務邏輯層、數據持久層。在javaweb中,界面層和業務邏輯層可以使用struts框架來封裝一些常用的操作。而在我們的數據持久層中,對數據庫的增刪改查,我們經常要手動的控制事務,各種sql語句查詢,各種參數傳遞,無論是對哪個表操作使用的均是同一種思路進行操作的。既然是同一種思路,那就是重復的東西了。而且我們還要和關系型數據庫打交道,而不單單的是對象。而hibernate框架對此作了完美的封裝。 ### Hibernate簡介 hibernate是一個基于java的對象/關系數據庫映射工具,它將對象模型表示的數據映射到SQL表示的關系模型上去。Hibernate管理java到數據庫的映射,提供給了數據查詢和存取的方法,減少了程序員對數據持久化層相關的編程任務。 ### 持久化與ORM 什么是持久化?是把數據保存到數據庫或者某些存儲設備中。在三層架構中,持久化是和數據庫打交道的層次。在jsp的web開發中,經常有許多數據庫連接、刪除、查詢等操作,在數據庫相關工作中通過jdbc過于繁瑣,就催生出了ORM(Object-RelationMapping),ORM作用是在關系數據庫和對象之間做一個自動映射,這樣在操作數據庫時不需要使用復雜的sql語句,只要操作對象即可,ORM工具會自動將對象轉換為sql語句操作。這樣就只需要關注業務邏輯中的對象結構,而不用關心底層復雜的sql和jdbc代碼。而Hibernate框架是ORM工具的一種,是關系/對象映射的解決方案(如圖1.1)。 ![](https://box.kancloud.cn/2016-06-21_5769087ecbadf.jpg) 圖1.1 ### Hibernate詳細架構 Hibernate高層架構圖和詳細架構圖如下圖所示(圖1.2和圖1.3)。 ![](https://box.kancloud.cn/2016-06-21_576908bade1c4.jpg) 圖1.2高層架構圖 ![](https://box.kancloud.cn/2016-06-21_576908bb07eb7.jpg) 圖1.3詳細架構圖 一些介紹。 (1)??會話工廠(SessionFactory) 會話工廠是對屬于單一數據庫的映射文件的線程安全的、不可變的緩存快照。它是會話的工廠類,可能持有一個可選的(二級)數據庫緩存,可以在進程級別或集群級別保存可以在事務中重用的數據。 (2)??會話(Session) 對于Session我們是那么的熟悉,在javaweb開發中session可以用來保存用戶會話過程中狀態信息。而hibernate中的session是對象與數據庫會話持久化管理器。 會話是單線程、聲明短暫的對象,代表應用和持久化層之間的一次對話,封裝了JDBC連接,事務的工程。保存必需持久化對象緩存,用于遍歷對象圖,或者表示查找對象。 (3)??持久化對象(PersistentObjects)和集合(Collection) 持久化對象是生命周期短暫的單線程對象,包含了持久化狀態,他們從屬于且僅從屬于一個session。 (4)??臨時對象(TransientObjects)和集合(Collection) 沒有從屬于一個session的持久化類的實例。它們可能是剛被程序實例化,還沒來得及持久化的對象,或者是一個已經被關閉的Session所是實例化。 (5)??事務(Transaction) 單線程,應用程序用它表示一批不可分割操作。一個session在某些情況下可能跨越多個事務。 (6)??連接提供者(ConnectionProvider) JDBC連接工廠和池,從底層的Datasource或者DriverManager抽象而來。對應用程序不可見,但是可以被開發擴展或實現。 (7)??事務工廠(TransationFactory) 事務實例的工廠,對應用程序不可見,但可以被開發者擴展或實現。 ### Hibernate優點和缺點 優點:Hibernate持久層與數據庫打交道的橋梁,徹底封裝了JDBC,隱藏了更多的細節,有很好的移植性。JDBC語句繁瑣,賦值執行我們不用再寫相關代碼,提高了效率,同時hibernate是一個輕量級框架(不依賴于別的運行),沒有侵入性,測試簡單,提高了生產力。 缺點:封裝的太徹底導致不靈活,是用數據特定的東西比較不容易。對大量數據庫的更新有問題,當程序大量查詢統計,或批量更新無法使用數據庫特性機制,例如存儲過程等。 下一篇[Hibernate示例](http://blog.csdn.net/lovesummerforever/article/details/19170795)。 ?
                  <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>

                              哎呀哎呀视频在线观看