(a)事务隔离级别和(b)使用DBMS'强制执行JPA锁定模式。锁定表/行。如果我设置(a)不检查任何锁定和(b)检查某些锁定,反之亦然会发生什么?哪个优先?
示例(使用Spring):
@Transactional(isolation = Isolation.READ_UNCOMMITTED)
public void incrementVal(int primaryKey) {
SomeEntity e = entityManager.find(
SomeEntity.class, primaryKey, LockModeType.PESSIMISTIC_WRITE);
int val = e.getVal();
e.setVal(val + 1);
}
或者,扭转约束:
@Transactional(isolation = Isolation.SERIALIZABLE)
public void incrementVal(int primaryKey) {
SomeEntity e = entityManager.find(
SomeEntity.class, primaryKey, LockModeType.NONE);
int val = e.getVal();
e.setVal(val + 1);
}
这显然不是一个真正的问题,但我试图了解这些是如何工作的,以及它们之间的相互作用。谢谢!