簡體   English   中英

JPA和Hibernate是否自動更新數據庫,而無需事務開始和提交

[英]Does JPA and Hibernate automatically update database without transaction begin and commit

在JPA中,如果我嘗試使用setter和getter方法更新托管對象而不使用事務開始和提交,那么考慮到FlushTypeAUTO ,JPA會自動更新數據庫(不是立即更新)。

在JPA中,實體狀態轉換不會自動與數據庫同步。 如果實體附加到持久性上下文,則在刷新時自動臟檢查機制將對象狀態更改轉換為DML語句。

但是這需要實體由持久化上下文管理,否則,臟檢查機制將不會觸發。

盡管JPA規范僅要求將實體狀態轉換包裝在邏輯事務中:

您應該始終使用事務 ,即使只讀取數據。

如果在讀取數據時沒有顯式使用事務,則會回退到自動提交模式,從而給連接池機制帶來額外壓力,最終每個查詢都有一個數據庫事務。

我使用的實現(DataNucleus JPA)確實允許這種情況(如自動提交模式)。 如果未啟用該模式,則它將退回到標准JPA所做的工作,即保留這些更改直到下一次事務。

暫無
暫無

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

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