最近在写一个简单的web框架,使用动态代理和ThreadLocal实现的事务管理,在这里和大家分享一下。
关于动态代理有jdk动态代理和cglib动态代理,这里选用了cglib。
DbHelper类提供数据库的一些操作。
package com.me.coin.framework.dao;
import java.sql.Connection;
import java.sql.SQLException;
import javax.sql.DataSource;
/**
* 提供数据库的一些操作
* @author dwl
*
*/
public class DbHelper {
//线程变量
private static ThreadLocal<Connection> localConn = new ThreadLocal<Connection>();
//数据库连接池
private static DataSource dataSource = DataSourceMaker.getInstance().getDataSource();
/**
* 获取连接
* @return
*/
public static Connection getConnection() {
Connection conn;
try {
conn = localConn.get();
if (conn == null) {
conn = dataSource.getConnection();
if (conn != null) {
localConn.set(conn);
}
}
} catch (SQLException e) {
throw new RuntimeException(e);
}
return conn;
}
/**
*