entityManager 的 merge/refresh/flush 方法

理解eneityManager的這三個方法的作用和區別,首先需要分清楚PersistenceContext 和 EntityManager.
 
PersistenceContext:是entity的一個實例。
EntityManager:是和PersistenceContext聯繫在一起的,被用來創建、刪除或者查找一個持久化Entity實例。
 
換句話來說PersistenceContext可以說成是數據庫的緩存。
1.merge
通過entityManager將一個存在的實體“同步到”persistenceContext中。
實體的狀態將從其單獨的狀態轉換爲受persistenceContext管理的狀態。
如果Entity是新創建的,則這個方法類似於persist()這個方法。
如果Entity已經存在的,則只作爲更新操作。
 
2.Flush
將PersistenceContext的信息同步到數據庫中。
當觸發Flush這個動作的時候,所有的實體都將會被insert/update/remove到數據庫中。
數據庫不會觸發Commit的操作。
 
3.Refresh
Refresh的作用是從數據庫中將Entity的狀態進行更新操作。如果Entity和數據庫中的數據不一致,將更新數據庫中的數據到Entity中。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章