如何在休眠中检查连接

时间:2014-09-17 04:51:52

标签: mysql hibernate hibernate-entitymanager

我是使用hibernate连接的新手,我在执行查询之前检查连接时遇到了困难。目前,如果我执行查询,我的java swing应用程序大约会在大约30秒后挂起,然后才能确认连接不可用。我已经使用了session.isConnected()但是即使服务器已关闭,返回也始终为true。请帮忙。谢谢

这是我的连接属性:

"hibernate.connection.provider_class", "org.hibernate.connection.C3P0ConnectionProvider" 
"hibernate.c3p0.validate", "true" 
"hibernate.c3p0.acquire_increment", "2" 
"hibernate.c3p0.idle_test_period", "30" 
"hibernate.c3p0.min_size", "5" 
"hibernate.c3p0.max_size", "25" 
"hibernate.c3p0.max_statements", "0" 
"hibernate.c3p0.testConnectionOnCheckout", "true" 
"hibernate.c3p0.testConnectionOnCheckIn", "true" 
"hibernate.c3p0.preferredTestQuery", "SELECT 1" 
"hibernate.c3p0.acquireRetryAttempts", "3" 
"hibernate.c3p0.acquireRetryDelay", "200" 
"hibernate.c3p0.timeout", "1000" 
"hibernate.c3p0.maxConnectionAge", "1100" 
"hibernate.connection.autoReconnect", "true" 
"javax.persistence.lock.timeout", "1" 
"javax.persistence.query.timeout", "1" 

1 个答案:

答案 0 :(得分:0)

您使用的是连接池吗?如果是这样,您通常可以使用validationQuery(例如“SELECT 1”)对其进行配置,该验证将在分发给您之前执行。无需亲自手动完成。

您还没有使用连接池吗?使用一个!

回答您的评论:您可能需要明确启用验证。例如。将hibernate.c3p0.validate设置为true