10.4 MyBatis事务管理 10.4.2Transaction接口

10.4 MyBatis事务管理 10.4.2Transaction接口

MyBatis事务设计的重点是org.apache.ibatis.transaction.Transaction接口.

Transaction接口及其实现类

Transaction接口有两个实现类,分别是:

  • org.apache.ibatis.transaction.jdbc.JdbcTransaction,
  • org.apache.ibatis.transaction.Managed.ManagedTransaction

TransactionFactory接口及其实现类

同时MyBatis还设计了org.apache.ibatis.transaction.TransactionFactory接口用来获取事务的实例对象。

TransactionFactory接口有如下两个实现类:

  • org.apache.ibatis.transaction.jdbc.JdbcTransactionFactory,
  • org.apache.ibatis.transaction.managed.ManagedTransactionFactor6y

数据库事务动作

对数据库的事务而言,应该具有以下几个动作:

  • 创建(create)、
  • 提交(commit)、
  • 回滚(rollback)、
  • 关闭(close)。

Transaction接口

对应地,MyBatis将事务抽象成了Transaction接口。该接口源代码如下:

1
2
3
4
5
6
7
8
9
10
public interface Transaction{
//获取数据库连接
Connection getConnection() throws SQLException;
//提交
void commit() throws SQLException
//回滚
void rollback() throws SQLException
//关闭数据库连接
void close() throws SQLException
}

MyBatis事务管理机制

MyBatis的事务管理分为两种形式:

  • 使用JDBC的事务管理机制。即利用java.sql.Connection对象完成对事务的提交(commit())、回滚(rollback())和关闭(close())等操作。
  • 使用MANAGED的事务管理机制。对于这种机制,MyBatis自身不会去实现事务管理,而是让容器如WebLogicJBoss等来实现对事务的管理。