当我在java中使用connection.setAutoCommit(false)时,设置了什么样的MySQL锁?

时间:2013-12-27 12:47:33

标签: java mysql jdbc prepared-statement

假设我有以下代码。

try {
   connection.setAutoCommit(false) ;
   ....
   ....


   connection.commit();
   }
 catch (Exception e)
   {
   }

上述事务是否获取了在try语句的代码中引用的MySQL表的锁定?如果是这样,这些锁是什么类型的?这些读锁还是写锁? 此外,它是否在表上进行行级锁定或完全锁定?

1 个答案:

答案 0 :(得分:1)

JDBC中有两种锁定。

  1. 乐观锁定
  2. 悲观锁定
  3. 悲观锁定会在选择要更新的行后立即锁定记录。

    乐观锁定仅在进行更新时锁定记录。

    connection.setAutoCommit(false);表示您正在此连接上启动事务。您将对此连接中的数据库表所做的所有更改将在提交时保存,或在还原时还原(或在不提交时断开连接)。这并不意味着您锁定整个数据库。是否锁定其他用户试图访问您的事务所使用的表将取决于您的事务正在执行的操作和事务隔离级别。