如果我设置"不兼容"事务隔离级别和锁定模式,哪个优先?

时间:2016-12-20 14:37:32

标签: java database jpa locking isolation-level

(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);
}

这显然不是一个真正的问题,但我试图了解这些是如何工作的,以及它们之间的相互作用。谢谢!

0 个答案:

没有答案