如果我在Java代码中进行这样的调用:
entityManager.lock(entity, LockModeType.PESSIMISTIC_WRITE);
是在代码,DBMS表/行级锁,还是其他任何一种,都取决于JPA实现?
谢谢!
答案 0 :(得分:1)
JPA依靠dbms获取资源锁定。所以,是的,它会对数据库实现进行行锁定。这就是我们在使用JpA时必须指定db方言的原因。
答案 1 :(得分:0)
这是来自Oracle博客摘录:悲观锁定模式在读取数据时锁定数据库行。这相当于响应SQL语句SELECT所采取的操作。 。 。 FOR UPDATE [NOWAIT]。
这来自WikiBooks:悲观锁定的SQL语法是特定于数据库的,不同的数据库具有不同的语法和支持级别,因此请确保您的数据库正确支持您的锁定要求。
还有其他方法可以实现悲观锁定,可以在应用程序级别实现,也可以通过可序列化的事务隔离实现。