Posted on 三月 31, 2020
MyBatis事务相关心得
使用过程中发现,对某条记录update,如果session未commit,则其他session对该记录无法写(会阻塞),但是对别的记录是可以写的。感觉是行级别的锁。
如果设置隔离级别为Serializable,则就算是对该表其他记录操作也是抛异常的,感觉是表级别的锁。
但是几个隔离级别还是不懂。
autoCommit=false,没有执行commit(),仅执行close(),会发生什么
困扰许久的问题终于找到了答案:
结论:autoCommit=false,但是没有手动commit,在sqlSession.close()时,Mybatis会将事务进行rollback()操作,然后才执行conn.close()关闭连接。
我的理解:在autoCommit = false的情况下,不commit,事务是不会提交的,就算不调用rollback,也是可以的。