簡體   English   中英

如果我修改了一個 Hibernate 實體,在保存后,當我提交時,更改會被保存到數據庫中

[英]If I modify a Hibernate entity, after doing a save, when I commit would the changes be saved to the database

如果在 Hibernate 中,我執行以下步驟:

  1. 打開一個會話。
  2. 創建一個新的hibernate POJO 對象(即要保存),並填寫值。
  3. 現在我做 session.save()。
  4. 現在我更改 POJO 對象 - 假設它是一個員工對象,我執行 emp.setName("Other Name") 即更改對象中員工的姓名。
  5. 現在我做了一個事務提交。

我的問題是什么會被保存到數據庫中——我做 session.save() 之前的名稱還是更改后的名稱,即“其他名稱”?

保存實體的那一刻,它就成為托管的,所有進一步的更改都會在Session.flush期間傳播到數據庫。

當您保存實體時,您只觸發了一個EntityInsertAction排隊。 更改實體后,當前實體狀態已更改,因此在刷新期間,Hibernate 將簡單地插入最新的實體狀態,因此數據庫將包含"Other Name"

實際上,為托管實體(觸發實體merge )調用save類的方法實際上會影響性能。

在使用托管實體時,當您不調用 save 時,它​​將自動保存。

一旦您進行事務提交,您在會話中所做的一切都會提交到數據庫中。 即使您刷新會話,您也只是在內存中的表上添加更改,但沒有提交到數據庫。

所以最后,一旦 Hibernate 檢測到會話是臟的,它就會提交更改,以防您的配置中有自動臟檢查,並且它會足夠聰明地查看對象會話上的最后更改。 所以是的,你會有“其他名字”

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM