Markdown语法
Markdown已经成为一款流行的文本编辑器。尤其是作为媒体编辑从业者者来说,掌握MarkDown语法,无疑会大大提升工作效率。
以下是我使用Markdown语法发布的博客的文本内容,post在这里是为了提醒自己,时不时学习Markdown语法,以防自己忘记。参见博客
学习Markdown语法。
在实际的开发工作中,MyBatis已经成为了当下最流行的关系型数据库与实体Model的映射框架。
今天就简单学习一下MyBatis的事务处理部分源码。
> Mybatis事务处理位于 org.apache.ibatis.transaction 下。类图如下:

入口类:
**Transaction**
>Wraps a database connection. Handles the connection lifecycle that comprises: its creation, preparation, commit/rollback and close.
接口中定义的方法详解
1. Connection getConnection() 获取数据库连接
2. void commit() 事务提交
3. void rollback() 事务回滚
4. void close() 关闭连接
5. Integer getTimeout() 获取超时时间设置
再来看一下,**TransactionFactory**,显然它是创建**Transaction**的工厂类。
1. void setProperties(Properties props);
2. Transaction newTransaction(Connection conn);
3. Transaction newTransaction(DataSource dataSource, TransactionIsolationLevel level, boolean autoCommit);
**Transaction**有两个实现类,分别是**JdbcTransaction**和**ManagedTransaction**,前者是原生的事务生命周期处理类,而后者是由容器来管理事务的生命周期。这里所指的容器是指Spring或者是Tomcat。
**Connection**对象是通过**DataSource**来获取的,同时会设置数据库事务的隔离级别**TransactionIsolationLevel**。
```Java
protected void openConnection() throws SQLException {
if (log.isDebugEnabled()) {
log.debug("Opening JDBC Connection");
}
this.connection = this.dataSource.getConnection();
if (this.level != null) {
this.connection.setTransactionIsolation(this.level.getLevel());
}
}
```
**TransactionIsolationLevel**是一个枚举类,维护了一个final类型的int值,来抽象数据库事务的四个级别。
```Java
/**
事务隔离级别
*/
public enum TransactionIsolationLevel {
NONE(Connection.TRANSACTION_NONE), //1.none 不要求事务管理 0
READ_COMMITTED(Connection.TRANSACTION_READ_COMMITTED), //2.read_committed 已提交读 1
READ_UNCOMMITTED(Connection.TRANSACTION_READ_UNCOMMITTED), //3 .read_uncomittted 未提交读 2
REPEATABLE_READ(Connection.TRANSACTION_REPEATABLE_READ), //4.repeatable_read 可重复读 4
SERIALIZABLE(Connection.TRANSACTION_SERIALIZABLE); // 5.sealalizable 可串行化 8
private final int level;
private TransactionIsolationLevel(int level) {
this.level = level;
}
public int getLevel() {
return level;
}
}
```
在事务处理过程中,还有两个不可或缺的重要角色,**Connection**与**DataSource**。关于这两个类的学习,以后再进行记录和分享。
> BTW,这是我的第一篇博文,这篇文章也是对Markdown语法的学习。
---
> **一个平凡而普通的人,时时都会感到被生活的波涛巨浪所淹没。你会被淹没吗?除非你甘心沉沦。**

浙公网安备 33010602011771号