首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> Java 程式設計 >> J2EE

JPA 2.0 四大新特性詳解(四):悲觀鎖定支援

     編輯:J2EE

JPA 2.0 新增六種鎖模式,完善並發控制

鎖定是處理資料庫事務並發的關鍵技術。JPA 1.0 僅支援樂觀鎖(READ/WRITE),JPA 2.0 引入 6 種新模式,包含 2 種樂觀、3 種悲觀與 1 種無鎖模式。

新增樂觀鎖模式

  • OPTIMISTIC:等同 READ,新應用建議使用
  • OPTIMISTIC_FORCE_INCREMENT:等同 WRITE,新應用建議使用

新增悲觀鎖模式

  • PESSIMISTIC_READ:讀取即鎖定,確保重複讀期間資料不被修改,不阻擋其他事務讀取
  • PESSIMISTIC_WRITE:更新時鎖定,強制並發更新序列化,適合更新失敗率高場景
  • PESSIMISTIC_FORCE_INCREMENT:讀取時鎖定,事務結束時強制遞增版本屬性,即使資料未修改

另提供 NONE 表示無鎖。

使用方式

可透過 EntityManager.lock()、find()、refresh() 指定鎖模式。範例:

Part p = em.find(Part.class, pId);
em.refresh(p, PESSIMISTIC_WRITE);
int pAmount = p.getAmount();
p.setAmount(pAmount - uCount);

先讀取資料,再套用 PESSIMISTIC_WRITE 鎖定並刷新,更新期間阻擋其他事務修改同一實體。

其他新特性

JPA 2.0 還整合 Bean Validation,可在 persistence.xml 以 <validation-mode> 設定自動驗證週期,持久化/更新/移除時自動檢查實體約束(如欄位最大長度)。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved