hibernate入門

來源:互聯網
上載者:User

標籤:

A hibernate的幾個基本類

hibernate是一個用於java訪問資料的架構,它實現了將這一操作對象化的目標。

hibernate底層依然使用的是jdbc對資料庫進行操作。

在具體操作中,有幾個比較重要的類:

Configuration,SessionFactory,Session

參考下面代碼

           Configuration cfg = new Configuration();        SessionFactory sf = cfg.configure().buildSessionFactory();                Session session = sf.openSession();        session.beginTransaction();       Data s=new Data();//s是我們要儲存的執行個體       session.save(s);       session.getTransaction().commit();

Configuration對象讀取預設的xml設定檔,然後產生一個SessionFactory對象

注意,對於每個程式,Configuration和SessionFactory對象都只能有一個。

而Session對象每個線程一個。

 

 

B hibernate的三種狀態

臨時狀態:由java的new命令開闢記憶體空間的java對象也就是普通的java對象,如果沒有變數引用它它將會被JVM收回。臨時對象在記憶體中是孤立存在的,它的意義是攜帶資訊載體,不和資料庫中的資料由任何的關聯。通過Session的save()方法和saveOrUpdate()方法可以把一個臨時對象和資料庫相關聯,並把臨時對象攜帶的資訊通過設定檔所做的映射插入資料庫中,這個臨時對象就成為持久化對象。

 

持久化狀態:持久化對象在資料庫中有相應的記錄,持久化對象可以是剛被儲存的,或者剛被載入的,但都是在相關聯的session聲明周期中儲存這個狀態。如果是直接資料庫查詢所返回的資料對象,則這些對象和資料庫中的欄位相關聯,具有相同的id,它們馬上變成持久化對象。如果一個臨時對象被持久化對象引用,也立馬變為持久化對象。

如果使用delete()方法,持久化對象變為臨時對象,並且刪除資料庫中相應的記錄,這個對象不再與資料庫有任何的聯絡。

持久化對象總是與Session和Transaction關聯在一起,在一個session中,對持久化對象的操作不會立即寫到資料庫,只有當Transaction(事務)結束時,才真正的對資料庫更新,從而完成持久化對象和資料庫的同步。在同步之前的持久化對象成為髒對象。

當一個session()執行close()、clear()、或evict()之後,持久化對象就變為離線對象,這時對象的id雖然擁有資料庫的識別值,但已經不在Hibernate持久層的管理下,他和臨時對象基本上一樣的,只不過比臨時對象多了資料庫標識id。沒有任何變數引用時,jvm將其回收。

 

脫管狀態:Session關閉之後,與此Session關聯的持久化對象就變成為脫管對象,可以繼續對這個對象進行修改,如果脫管對象被重新關聯到某個新的Session上,會在此轉成持久對象。

脫管對象雖然擁有使用者的標識id,所以通過update()、saveOrUpdate()等方法,再次與持久層關聯。

 

在上面的那個例子中,對象c在剛誕生時是臨時狀態,對其進行save後是持久化狀態,Session關閉後是託管狀態。

並且,Session.save(c)只是將c存到一個緩衝中去,只有commit之後,才會將其修改資料庫。

hibernate入門

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在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.