JPA EntityManager的四個主要方法 ——persist,merge,refresh和remove

JPA EntityManager的四個主要方法 ——persist,merge,refresh和remove

標籤: mergejpa數據庫objectinsertdelete
20907人閱讀 評論(1)收藏舉報
JPA EntityManager的四個主要方法 ——persist,merge,refresh和remove - 墮落天使 - 墮落の塵埃
 
public void persist(Object entity)

persist方法可以將實例轉換爲managed(託管)狀態。在調用flush()方法或提交事物後,實例將會被插入到數據庫中。

 

對不同狀態下的實例Apersist會產生以下操作:

1.      如果A是一個new狀態的實體,它將會轉爲managed狀態;

2.      如果A是一個managed狀態的實體,它的狀態不會發生任何改變。但是系統仍會在數據庫執行INSERT操作;

3.      如果A是一個removed(刪除)狀態的實體,它將會轉換爲受控狀態;

4.      如果A是一個detached(分離)狀態的實體,該方法會拋出IllegalArgumentException異常,具體異常根據不同的JPA實現有關。

public void merge(Object entity)

         merge方法的主要作用是將用戶對一個detached狀態實體的修改進行歸檔,歸檔後將產生一個新的managed狀態對象。

 

對不同狀態下的實例Amerge會產生以下操作:

1.      如果A是一個detached狀態的實體,該方法會將A的修改提交到數據庫,並返回一個新的managed狀態的實例A2

2.      如果A是一個new狀態的實體,該方法會產生一個根據A產生的managed狀態實體A2;

3.      如果A是一個managed狀態的實體,它的狀態不會發生任何改變。但是系統仍會在數據庫執行UPDATE操作;

4.      如果A是一個removed狀態的實體,該方法會拋出IllegalArgumentException異常。

public void refresh(Object entity)

        refresh方法可以保證當前的實例與數據庫中的實例的內容一致。

 

對不同狀態下的實例Arefresh會產生以下操作:

1.      如果A是一個new狀態的實例,不會發生任何操作,但有可能會拋出異常,具體情況根據不同JPA實現有關;

2.      如果A是一個managed狀態的實例,它的屬性將會和數據庫中的數據同步;

3.      如果A是一個removed狀態的實例,不會發生任何操作;

4.      如果A是一個detached狀態的實體,該方法將會拋出異常。

public void remove(Object entity)

        remove方法可以將實體轉換爲removed狀態,並且在調用flush()方法或提交事物後刪除數據庫中的數據。

 

對不同狀態下的實例Aremove會產生以下操作:

1.      如果A是一個new狀態的實例,A的狀態不會發生任何改變,但系統仍會在數據庫中執行DELETE語句;

2.      如果A是一個managed狀態的實例,它的狀態會轉換爲removed

3.      如果A是一個removed狀態的實例,不會發生任何操作;

4.      如果A是一個detached狀態的實體,該方法將會拋出異常。


http://yanchao90.blog.163.com/blog/static/1794602520112126051348/

0
0

發佈了10 篇原創文章 · 獲贊 11 · 訪問量 8萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章