ado.net统一事务,及连接池管理(二)

来源:互联网 发布:imo软件 编辑:程序博客网 时间:2024/06/05 16:15

一、事务管理器提供功能

我们的目标是支持事务的统一访问,又可支持事务的并发。让访问者看不到数据连接,只需关注事务的开启、提交、回滚即可,因此公开的功能如下:

1、开启事务:负责数据库连接的创建和事务的开启,如果当前线程中没有连接则创建连接并加入到连接池,如果事务没有开启则开启事务。

2、提交事务:负责数据库事务的提交,并释放数据库连接,并从连接池移除;

3、回滚事务:负责数据库事务的回滚,并释放数据库连接,并从连接池移除;

4、提供当前线程的事务获取访问能力,在同1个线程中,在事务提交或回滚前,其它接口应可以随时获取当前事务

二、事务管理器的设计

1、为使事务管理器功能更加独立,更加单一,所以将事务管理与连接的管理分开,分为2个类:事务管理类,连接管理类。事务管理器只负责连接池的维护、事务的控制,连接管理器负责各类连接字符串的维护、各类连接的创建;

2、为便于对象的控制,事务管理器类及连接管理器类均需实现singleton模式;

3、主要属性及公开方法如下:
private static Hashtable connTable = new Hashtable();  //用于存储连接

[ThreadStatic]
static OracleTransaction trans;    //当前数据库事务

[ThreadStatic]
static bool isBegin; //标识当前事务是否开始

private static TransManager transManager = new TransManager();

public void BeginTransaction();

public void CommitTransaction();

public void RollBackTransaction();

public OracleTransaction GetTransaction();