我对JPA和DB锁(乐观锁和悲观锁)和事务,它们如何工作以及有什么保证有一些了解。
如果由于显式锁定需要活动事务而调用锁时没有活动事务,则抛出TransactionRequiredException。
所以我的问题是:当事务(在JPA情况下为@Transactional)不足并且需要显式使用@Lock(LockModeType.PESSIMISTIC_ *)时,用例是什么?
我对精确的悲观锁感兴趣,并且期望使用案例如下:
Alice和Bob同时在Wikipedia上编辑页面,Alice开始编辑页面并锁定它。在这种情况下冗余/不足/性能低下............................
我不希望:
仅需要锁时使用@Lock
最好使用乐观锁
锁定用于防止脏读(读取尚未提交的数据)和不可重复读(读取在一次读取完成之前被另一事务删除的数据)。