gpt4 book ai didi

java - 是否应该关闭 doWork() 的 "connection"参数?

转载 作者:塔克拉玛干 更新时间:2023-11-03 03:47:05 24 4
gpt4 key购买 nike

我正在使用带有 Hibernate 的 C3P0 连接池来执行一些 JDBC 操作。但是,我在使用一段时间后收到“关闭连接”(SQL 错误:17008,SQLState:空)错误。

我正在使用 org.hibernate.jdbc.Work执行我的操作的界面:

public class ClassThatDoesWork implements Work {

@Override
public void execute(final Connection connection)
throws SQLException {

doSomeWork();
//should connection be closed here?
}
}

我的问题是:作为参数传递给 execute() 方法的 connection 对象是否应该在该方法结束时关闭,或者 Hibernate 会自动处理这个问题?

编辑这些是使用的 Hibernate 和 c3p0 参数:

hibernate.connection.driver_class=oracle.jdbc.driver.OracleDriver
hibernate.connection.pool_size=10
hibernate.dialect=org.hibernate.dialect.Oracle9iDialect
hibernate.connection.provider_class=org.hibernate.connection.C3P0ConnectionProvider
hibernate.show_sql=false
acquireIncrement=3
acquireRetryDelay=500
acquireRetryAttempts=5
breakAfterAcquireFailure=false
checkoutTimeout=0
connectionTesterClassName=com.mchange.v2.impl.DefaultConnectionTester
debugUnreturnedConnectionStackTraces=false
dataSourceName=irrelevantDB
identityToken=irrelevantDB
idleConnectionTestPeriod=0
initialPoolSize=3
maxConnectionAge=0
maxIdleTime=7200
maxIdleTimeExcessConnections=0
maxPoolSize=20
maxStatements=50
maxStatementsPerConnection=0
minPoolSize=5
numHelperThreads=3
propertyCycle=0
testConnectionOnCheckin=false
testConnectionOnCheckout=true
unreturnedConnectionTimeout=0
hibernate.c3p0.min_size=5
hibernate.c3p0.max_size=20
hibernate.c3p0.timeout=10
hibernate.c3p0.max_statements=50

最佳答案

Hibernate 将数据库连接作为方法参数传入,因此不应在方法内部进行篡改(例如关闭)——这是 Hibernate 的责任。

关于java - 是否应该关闭 doWork() 的 "connection"参数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10433145/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com