public TransactionProxy(String dataSourceId, Connection connection, DataSource dataSource) { this.connection = connection; this.dataSource = dataSource; this.dataSourceId = dataSourceId; this.isConnectionTransactional = DataSourceUtils.isConnectionTransactional(connection, dataSource); try { this.autoCommit = connection.getAutoCommit(); } catch (SQLException e) { } }
@Override public void commit(Connection connection) throws SQLException { if (!DataSourceUtils.isConnectionTransactional(connection, dataSource)) { connection.commit(); } } }
@Override public Connection getConnection() { DataSource dataSource = DataSourceHolder.currentDataSource().getNative(); Connection connection = DataSourceUtils.getConnection(dataSource); boolean isConnectionTransactional = DataSourceUtils.isConnectionTransactional(connection, dataSource); if (logger.isDebugEnabled()) { logger.debug("DataSource ({}) JDBC Connection [{}] will {}be managed by Spring", getDatasourceId(), connection, (isConnectionTransactional ? "" : "not ")); } return connection; }
public boolean isConnectionTransactional(Connection conn, DataSource ds) { return DataSourceUtils.isConnectionTransactional(conn, ds); }
public boolean isConnectionTransactional(Connection conn, DataSource ds) { return DataSourceUtils.isConnectionTransactional(conn, ds); } }
public TransactionProxy(String dataSourceId, Connection connection, DataSource dataSource) { this.connection = connection; this.dataSource = dataSource; this.dataSourceId = dataSourceId; this.isConnectionTransactional = DataSourceUtils.isConnectionTransactional(connection, dataSource); try { this.autoCommit = connection.getAutoCommit(); } catch (SQLException e) { } }
public TransactionProxy(String dataSourceId, Connection connection, DataSource dataSource) { this.connection = connection; this.dataSource = dataSource; this.dataSourceId = dataSourceId; this.isConnectionTransactional = DataSourceUtils.isConnectionTransactional(connection, dataSource); try { this.autoCommit = connection.getAutoCommit(); } catch (SQLException e) { } }
@Override public Connection getConnection() { Connection connection = DataSourceUtils.getConnection(dataSource); boolean isConnectionTransactional = DataSourceUtils.isConnectionTransactional(connection, dataSource); if (logger.isDebugEnabled()) { logger.debug("JDBC Connection [{}] will {} be managed by Spring", connection, (isConnectionTransactional ? "" : "not")); } return connection; }
@Override public Connection getConnection() { DataSource dataSource = DataSourceHolder.currentDataSource().getNative(); Connection connection = DataSourceUtils.getConnection(dataSource); boolean isConnectionTransactional = DataSourceUtils.isConnectionTransactional(connection, dataSource); if (logger.isDebugEnabled()) { logger.debug("DataSource ({}) JDBC Connection [{}] will {}be managed by Spring", getDatasourceId(), connection, (isConnectionTransactional ? "" : "not ")); } return connection; }
@Override public void end(SQLListenerContext context) { Connection connection = context.getConnection(); // 主动释放没有被Spring事务管理的连接 if (connection != null && !DataSourceUtils.isConnectionTransactional(connection, this.dataSource)) { try { DataSourceUtils.doCloseConnection(connection, this.dataSource); } catch (SQLException e) { throw new QueryException(e); } } }
/** * Execute a DBUbit operation */ private void executeOperation(DbUnitDatabasePopulator populator, DataSource dataSource) throws Exception { Connection connection = null; try { connection = getConnection(dataSource); populator.populate(connection); } finally { if (connection != null && !isConnectionTransactional(connection, dataSource)) { // if the connection is transactional, closing it. Otherwise, // expects that the framework will do it releaseConnection(connection, dataSource); } } } }