一、Jdk底层实现
Java JDK中提供了标准接口Connection
,不同的数据库驱动负责具体的实现。后面无论是Spring
还是Mybatis
对事务的处理,无论怎么的封装,最终究其到底都是由Connection
来提供的能力。
public interface Connection extends Wrapper, AutoCloseable {
Statement createStatement() throws SQLException;
void commit() throws SQLException;
void rollback() throws SQLException;
}
例如 com.mysql.cj.jdbc.ConnectionImpl
。具体负责跟mysql进行通信执行命令。
二、Mybatis实现
首先我们来看Mybatis是如何对Connection
进行事务的封装。首先我们先来看一个图。
2.1 调用流程
根据上面的图我们看,都是一层一层的封装进行委派最终由Connection
的具体数据库驱动来进行实现的。
- SqlSession
- Executor
- Transaction