jdbc的事务自动提交和手动提交,以及mybatis开启自动提交后是否会复用一个链接的验证

2019年12月05日 阅读数:79
这篇文章主要向大家介绍jdbc的事务自动提交和手动提交,以及mybatis开启自动提交后是否会复用一个链接的验证,主要内容包括基础应用、实用技巧、原理机制等方面,希望对大家有所帮助。

jdbc的sql执行默认是自动提交事务

默认时自动提交,当我手动提交时会报错,不过数据仍是会插入到数据库中,由于执行完executeupdate后数据库会自动commitsql

 

开启手动提交

手动提交则须要手动调用commit才能提交事务数据库

 

 

mybatis未开启自动提交事务

手动提交两次,固然数据库是提交一条才能看到一条,另外能够看到connect是使用的同一个session

 

从源码中能够看到每次执行insert最后调用如下的方法mybatis

 

从prepareStatement能够看到性能

看到最后能够获得,即若是有的话就会用原来的链接,另外看过源码的同窗应该知道,sqlsession建立出来时transaction就会被建立,而connect是由transaction管理的,因此只要用同一个sqlsession,那么connection使用的也是同一个3d

 

最后验证当mybatis使用自动提交事务时

能够看到即便使用自动提交事务,connection也是同一个,并会由于自动提交而从新获取connectionblog

 

最后能够看到,mybatis防止在开启自动提交事务时手动调用commit方法作了判断,防止手动提交会抛出异常事务

 

总结源码

为了提升数据库执行的性能,咱们不须要执行一条sql就去建立或者获取一个connection,而是能够重复使用,就像最开始jdbc那里同样,一个connection能够开启多个statement来执行屡次,事务也能够分开提交也能够一次提交,且事务的提交不会关闭connection。it