ORM架構Hibernate (二) 持久化對象的三種狀態分析

來源:互聯網
上載者:User

  1. 引入

    1. 在解壓Hibernate有好幾十兆就感覺這比Struts大多了,應該比Struts要深奧一些果然是這樣,不過如果你看了這篇文章,你也會理解的。
    2. 這裡先不說對象的狀態,本來對象挺簡單的Hibernate又把對象分了三種狀態,初次讓人看了有點頭暈的感覺怎麼這麼複雜?
    3. 通過看了一些資料體會是不應該先理解各種狀態以及他們的用法,而應該先重點理解一下Hibernate裡面的session緩衝機制,如果對session理解了自然而然的就懂了對象的狀態。
    4. Hibernate中session並不是通常用的那個會話session,此session非彼session。
  1. Session機制

    1. Hibernate中加入session是為了減少訪問資料庫頻率、提高資料庫效能,在session中定義了Java集合,Java
      Collection指的是List、Map、Set等,這些都實現了Java
      Collection介面,他們用於儲存很多的實體物件並構成了session緩衝。
    1. 當像Java對象被session管理時,對象會加入到session的Map裡面緩衝起來,session提供了一些方法可以保證緩衝與資料庫狀態保持同步。

      1. 例如你提交事務的時候會自動清理緩衝,並更新資料庫;當然你也可以手動調用flush()方法實現。
    1. 下面就出現了對象三種狀態

      1. 如果一個實體物件加入到了Session的Map裡,Map會儲存該對象的一個引用,這個對象就會被session管理,這個時候我們就稱該對象為持久化對象(Persistent)。
      2. 沒有被session管理的對象成為非持久化對象,非持久化又分為臨時對象(Transient)和游離對象(Detached)。
  1. 對象三種狀態

    1. 臨時狀態(Transient)

      1. 說的通俗一點就是一個對象剛建立的時候,沒有被其它對象引用,從對象生命週期來看剛剛建立所以資料庫中也不會有它的記錄。
    1. 持久化狀態(Persistent)

      1. 它是關聯session的對象,即被session引用了同時資料庫中也存在它的記錄。
    1. 游離狀態(Detached)

      1. 游離對象是斷開了session關聯,資料庫中已經它對應的資料了,由此可見,可以對象狀態是與session緊密聯絡的。
    1. 對象的三種狀態之間可以相會轉換,看下面一張圖

      1. 清楚的說明了各個對象之間得轉化關係以及調用方法。
  1. CRUD操作

    1. Hibernate的CRUD是建立在對象各種狀態之上的操作,它也提供了一些簡單介面供我們使用,利用這些介面讓我們插入、更新、分頁變得很簡單,以前分頁需要寫好幾個SQL語句嵌套才能完成,如果在Hibernate中只需要調用Query介面的setFirstResult()和setMaxResults()就可以分頁,很簡單。
    1. 知道了對象的狀態,對對象的操作也就會了,就不舉例子說明怎麼插入查詢等,主要還是理解了一些概念。對於操作經常使用就會熟悉。
    1. 架構帶來的好處還是很多的,建議多使用架構。

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.