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

                ??碼云GVP開源項目 12k star Uniapp+ElementUI 功能強大 支持多語言、二開方便! 廣告
                # 2.1\. 概況(Overview) 一個非常簡要的Hibernate體系結構的概要圖: ![](img/overview.gif) 從這個圖可以看出,Hibernate使用數據庫和配置信息來為應用程序提供持久化服務(以及持久的對象)。 我們來更詳細地看一下Hibernate運行時體系結構。由于Hibernate非常靈活,且支持多種應用方案, 所以我們這只描述一下兩種極端的情況。“輕型”的體系結構方案,要求應用程序提供自己的JDBC 連接并管理自己的事務。這種方案使用了Hibernate API的最小子集: ![](img/lite.gif) “全面解決”的體系結構方案,將應用層從底層的JDBC/JTA API中抽象出來,而讓Hibernate來處理這些細節。 ![](img/full_cream.gif) 圖中各個對象的定義如下: SessionFactory (`org.hibernate.SessionFactory`) 針對單個數據庫映射關系經過編譯后的內存鏡像,是線程安全的(不可變)。 它是生成`Session`的工廠,本身要用到`ConnectionProvider`。 該對象可以在進程或集群的級別上,為那些事務之間可以重用的數據提供可選的二級緩存。 Session (`org.hibernate.Session`) 表示應用程序與持久儲存層之間交互操作的一個單線程對象,此對象生存期很短。 其隱藏了JDBC連接,也是`Transaction`的工廠。 其會持有一個針對持久化對象的必選(第一級)緩存,在遍歷對象圖或者根據持久化標識查找對象時會用到。 持久的對象及其集合 帶有持久化狀態的、具有業務功能的單線程對象,此對象生存期很短。 這些對象可能是普通的JavaBeans/POJO,唯一特殊的是他們正與(僅僅一個)`Session`相關聯。 一旦這個`Session`被關閉,這些對象就會脫離持久化狀態,這樣就可被應用程序的任何層自由使用。 (例如,用作跟表示層打交道的數據傳輸對象。) 瞬態(transient)和脫管(detached)的對象及其集合 那些目前沒有與session關聯的持久化類實例。 他們可能是在被應用程序實例化后,尚未進行持久化的對象。 也可能是因為實例化他們的`Session`已經被關閉而脫離持久化的對象。 事務Transaction (`org.hibernate.Transaction`) (可選的)應用程序用來指定原子操作單元范圍的對象,它是單線程的,生命周期很短。 它通過抽象將應用從底層具體的JDBC、JTA以及CORBA事務隔離開。 某些情況下,一個`Session`之內可能包含多個`Transaction`對象。 盡管是否使用該對象是可選的,但無論是使用底層的API還是使用`Transaction`對象,事務邊界的開啟與關閉是必不可少的。 ConnectionProvider (`org.hibernate.connection.ConnectionProvider`) (可選的)生成JDBC連接的工廠(同時也起到連接池的作用)。 它通過抽象將應用從底層的`Datasource`或`DriverManager`隔離開。 僅供開發者擴展/實現用,并不暴露給應用程序使用。 TransactionFactory (`org.hibernate.TransactionFactory`) (可選的)生成`Transaction`對象實例的工廠。 僅供開發者擴展/實現用,并不暴露給應用程序使用。 _擴展接口_ Hibernate提供了很多可選的擴展接口,你可以通過實現它們來定制你的持久層的行為。 具體請參考API文檔。 在特定“輕型”的體系結構中,應用程序可能繞過 `Transaction`/`TransactionFactory` 以及 `ConnectionProvider` 等API直接跟JTA或JDBC打交道。
                  <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>

                              哎呀哎呀视频在线观看