【发布时间】:2015-06-23 04:47:18
【问题描述】:
我从 c3p0 池获得连接以进行批量插入,我设置 autoCommit=false,使用后,我将其放回投票。如果 autoCommit=false 对这个连接仍然有效?
【问题讨论】:
标签: c3p0
我从 c3p0 池获得连接以进行批量插入,我设置 autoCommit=false,使用后,我将其放回投票。如果 autoCommit=false 对这个连接仍然有效?
【问题讨论】:
标签: c3p0
没有。根据 JDBC 规范,新的连接是 autocommit=true,并且 c3p0 实现了透明的连接池,这意味着在 c3p0 应用程序中正常运行的应用程序也应该使用未池化的连接源正常运行。
如果您愿意,您可以通过定义 ConnectionCustomizer 来覆盖此行为。比如……
package mypkg;
import com.mchange.v2.c3p0.AbstractConnectionCustomizer;
import java.sql.Connection;
public class AutocommitConnectionCustomizer extends AbstractConnectionCustomizer {
@Override
public void onCheckOut(Connection c, String parentDataSourceIdentityToken) throws Exception {
c.setAutoCommit( false );
}
}
然后,在您的配置中...
c3p0.connectionCustomizerClassName=mypkg.AutocommitConnectionCustomizer
我希望这会有所帮助!
【讨论】:
autoCommit 设置为false,无论您执行任何数据库操作,它都将保持为假,直到您将close() Connection 或明确地将autoCommit 重置为true .