亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

客戶端-服務器應用程序的 JPA 悲觀鎖邏輯

客戶端-服務器應用程序的 JPA 悲觀鎖邏輯

慕村225694 2023-03-09 10:41:47
我正在學習 JPA 悲觀鎖。我找到了以下解釋PESSIMISTIC_READ - 實體在數據庫上被鎖定,防止任何其他事務獲取 PESSIMISTIC_WRITE 鎖。PESSIMISTIC_WRITE - 實體在數據庫上被鎖定,防止任何其他事務獲取 PESSIMISTIC_READ 或 PESSIMISTIC_WRITE 鎖。如果我理解正確的話,那么如果我們有三個用戶(A,B,C),用戶A獲得READ鎖,那么用戶B也可以獲得READ鎖,但是用戶C無法獲得WRITE鎖,直到用戶A和B釋放他們的鎖。如果用戶 A 獲得 WRITE 鎖,那么在用戶 A 釋放鎖之前,用戶 B 和用戶 C 什么也得不到。但是,對于我的客戶端-服務器應用程序,我需要以下邏輯。如果用戶只想讀取實體,則他們以只讀模式打開實體(無限數量的用戶可以同時進行)。如果某個用戶想要編輯他在 WRITE 模式下打開它的實體 - 沒有人可以在 WRITE 模式下打開同一個實體(直到用戶釋放 WRITE 鎖)但所有其他人仍然可以在 READ-ONLY 模式下打開實體。我有兩個問題:我對JPA悲觀鎖的理解對嗎?是否可以讓 JPA 執行我需要的邏輯(使用 JPA 鎖定機制)?
查看完整描述

1 回答

?
慕尼黑的夜晚無繁華

TA貢獻1864條經驗 獲得超6個贊

我對JPA悲觀鎖的理解對嗎?

是的,這正是讀/寫鎖定的工作原理

...但所有其他人仍然可以在 READ-ONLY 模式下打開實體

我不太確定你的意思。我們還是在說多個事務同時執行吧(我有種奇怪的感覺,不是你的意思)?如果是這種情況,那么按照您的邏輯,持有“READ_ONLY”鎖將無濟于事。

鎖定意味著“我正在凍結此資源,以便某些其他事務在我完成之前無法繼續”。但是,在您描述的邏輯中,當您持有“READ_ONLY”鎖時,允許持有“READ_ONLY”鎖的事務和持有“WRITE”鎖的事務繼續進行。


查看完整回答
反對 回復 2023-03-09
  • 1 回答
  • 0 關注
  • 81 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號