diff --git a/hutool-db/src/main/java/cn/hutool/db/AbstractDb.java b/hutool-db/src/main/java/cn/hutool/db/AbstractDb.java index 69893c140..72f83bcb3 100755 --- a/hutool-db/src/main/java/cn/hutool/db/AbstractDb.java +++ b/hutool-db/src/main/java/cn/hutool/db/AbstractDb.java @@ -35,10 +35,9 @@ import java.util.Map; * * @author looly */ -public abstract class AbstractDb> implements ConnectionHolder, Serializable { +public abstract class AbstractDb> extends DefaultConnectionHolder implements Serializable { private static final long serialVersionUID = 3858951941916349062L; - protected final DataSource ds; /** * 是否支持事务 */ @@ -58,7 +57,7 @@ public abstract class AbstractDb> implements ConnectionH * @param dialect 数据库方言 */ public AbstractDb(final DataSource ds, final Dialect dialect) { - this.ds = ds; + super(ds); this.runner = new DialectRunner(dialect); } // ------------------------------------------------------- Constructor end diff --git a/hutool-db/src/main/java/cn/hutool/db/Db.java b/hutool-db/src/main/java/cn/hutool/db/Db.java index 4b1fbfda4..7c1da14d4 100644 --- a/hutool-db/src/main/java/cn/hutool/db/Db.java +++ b/hutool-db/src/main/java/cn/hutool/db/Db.java @@ -106,29 +106,6 @@ public class Db extends AbstractDb { } // ---------------------------------------------------------------------------- Constructor end - @Override - public Connection getConnection() throws DbRuntimeException { - try { - return ThreadLocalConnection.INSTANCE.get(this.ds); - } catch (final SQLException e) { - throw new DbRuntimeException(e); - } - } - - @Override - public void closeConnection(final Connection conn) { - try { - if (conn != null && false == conn.getAutoCommit()) { - // 事务中的Session忽略关闭事件 - return; - } - } catch (final SQLException e) { - // ignore - } - - ThreadLocalConnection.INSTANCE.close(this.ds); - } - /** * 执行事务,使用默认的事务级别
* 在同一事务中,所有对数据库操作都是原子的,同时提交或者同时回滚 diff --git a/hutool-db/src/main/java/cn/hutool/db/DefaultConnectionHolder.java b/hutool-db/src/main/java/cn/hutool/db/DefaultConnectionHolder.java new file mode 100644 index 000000000..8321636b5 --- /dev/null +++ b/hutool-db/src/main/java/cn/hutool/db/DefaultConnectionHolder.java @@ -0,0 +1,42 @@ +package cn.hutool.db; + +import javax.sql.DataSource; +import java.sql.Connection; +import java.sql.SQLException; + +/** + * 默认的连接持有器 + * + * @author looly + */ +public class DefaultConnectionHolder implements ConnectionHolder { + + protected final DataSource ds; + + public DefaultConnectionHolder(DataSource ds) { + this.ds = ds; + } + + @Override + public Connection getConnection() throws DbRuntimeException { + try { + return ThreadLocalConnection.INSTANCE.get(this.ds); + } catch (final SQLException e) { + throw new DbRuntimeException(e); + } + } + + @Override + public void closeConnection(final Connection conn) { + try { + if (conn != null && false == conn.getAutoCommit()) { + // 事务中的Session忽略关闭事件 + return; + } + } catch (final SQLException e) { + // ignore + } + + ThreadLocalConnection.INSTANCE.close(this.ds); + } +} diff --git a/hutool-db/src/main/java/cn/hutool/db/Session.java b/hutool-db/src/main/java/cn/hutool/db/Session.java index f9f78fe4e..a4b43141e 100644 --- a/hutool-db/src/main/java/cn/hutool/db/Session.java +++ b/hutool-db/src/main/java/cn/hutool/db/Session.java @@ -268,30 +268,6 @@ public class Session extends AbstractDb implements Closeable { // ---------------------------------------------------------------------------- Transaction method end - @Override - public Connection getConnection() throws DbRuntimeException { - try { - return ThreadLocalConnection.INSTANCE.get(this.ds); - } catch (final SQLException e) { - throw new RuntimeException(e); - } - } - - @Override - public void closeConnection(final Connection conn) { - try { - if(conn != null && false == conn.getAutoCommit()) { - // 事务中的Session忽略关闭事件 - return; - } - } catch (final SQLException e) { - log.error(e); - } - - // 普通请求关闭(或归还)连接 - ThreadLocalConnection.INSTANCE.close(this.ds); - } - @Override public void close() { closeConnection(null);