假设我有下面这段代码。
try {
connection.setAutoCommit(false) ;
....
....
connection.commit();
}
catch (Exception e)
{
}上面的事务是否在try语句的代码中引用的MySQL表上获取锁?如果是这样,这些锁是什么类型的?这些是读锁还是写锁?另外,它是在表上生成行级锁还是完全锁?
发布于 2013-12-27 20:56:04
JDBC中有两种可用的锁定。
悲观锁定在选择要更新的行时立即锁定记录。
乐观锁定仅在发生更新时锁定记录。
但是connection.setAutoCommit(false);意味着您正在此连接上启动一个事务。您将对此连接中的DB表所做的所有更改将在提交时保存,或在回滚时恢复(或在未提交的情况下断开连接)。这并不意味着你锁定了整个数据库。其他用户在尝试访问您的事务使用的表时是否会被锁定,将取决于您的事务正在执行的操作和事务隔离级别。
https://stackoverflow.com/questions/20801008
复制相似问题