[英]Concurrent updates of same entity
先生們/女士們,
我對同一個實體的並發更新有問題。
流程1獲取對象的集合。 為了提高性能,此過程不使用Hibernate來檢索數據,這對我來說有點牽強。 此過程還使用Hibernate更新了集合中某些對象的某些字段。
流程2獲得一個與集合中的對象相似的對象(基本上是DB中的同一行),並以某種方式對其進行更新。 此過程使用Hibernate。
由於進程1和進程2彼此不了解,因此他們可以更新同一實體,從而使其處於不一致狀態。
例如:
我需要處理這種情況。
那該怎么辦呢?
現在,我看到兩種方法:
任何想法都將非常有幫助
提前致謝
由於進程1和進程2彼此不了解,因此他們可以更新同一實體,從而使其處於不一致狀態。
我將這樣重新表述:兩個進程都可以更新相同的數據 。 只有Hibernate知道實體,而其他進程似乎通過JDBC訪問數據。
我會選擇選項2,它會在您的實體中涉及版本列。 然后,IIRC Hibernate將向查詢中添加WHERE version = x
條件,並檢查是否所有行都已更新,否則將引發OptimistictLockException
。 您可以在JDBC查詢中執行相同的操作,即UPDATE ... SET ... version = x + 1 ... WHERE version = x AND additionalConditions
並檢查JDBC返回的更新行數。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.