Home Articles

Hibernate和mysql超时问题

Asked
Viewed 852 times
1

我一直遇到Hibernate和Mysql超时错误的问题 . 我也使用了c3p0(连接提供程序)的属性 . 我的Hibernate / MySQL在8小时后运行后(这是Mysql中的默认超时值),我有异常 . 但它没有帮助 .

自动重新连接的属性也无法正常工作 .

这是我的Hibernate配置:

<property name="connection_provider_class">org.hibernate.connection.C3P0ConnectionProvider</property>
    **<property name="connection.autoReconnect"> true</property>
    <property name="connection.autoReconnectForPools">true</property>**
    <property name="connection.is-connection-validation-required">true</property>
    <property name="c3p0.validate">true</property>
    <property name="current_session_context_class">thread</property>
    <property name="cache.use_query_cache">false</property>
    <property name="cache.use_second_level_cache">false</property>
    <property name="c3p0.idle_test_period">20</property>
    <property name="c3p0.timeout">40</property>
    <property name="c3p0.max_size">100</property>
    <property name="c3p0.min_size">1</property>
    <property name="c3p0.acquireRetryAttempts">10</property>
    <property name="c3p0.maxPoolSize">100</property>
    <property name="c3p0.maxIdleTime">300</property>
    <property name="c3p0.maxStatements">50</property>
    <property name="c3p0.minPoolSize">10</property>
    <property name="c3p0.preferredTestQuery">select 1;</property>
    <property name="connection.driver_class">com.mysql.jdbc.Driver</property>
    <property name="connection.url">jdbc:mysql://localhost:3306/doqeap</property>
    <property name="connection.user">root</property>
    <property name="connection.password">*******</property>
    <property name="dialect">org.hibernate.dialect.MySQLDialect</property>
    <property name="hibernate.jdbc.batch_size">0</property>
    <mapping></mapping>

请帮我解决这个问题 . 谢谢

1 Answer

  • 0

    如果连接超时是问题,那么连接测试应该消除,通过checkout上的测试(可靠但是强加客户端可见的性能成本)或检查空闲测试的测试 .

    看着你的配置参数,看起来你的意思是在结账和空闲测试上设置测试 . 我希望c3p0会在你的应用看到它们之前消除超时异常 . 如果没有发生这种情况,看到两件事情很有意思:1)c3p0的配置,当池初始化时在INFO上记录 - 是c3p0,通过休眠层,看到你想要的配置? 2)您的应用在遇到陈旧的连接时收到的异常 .

    祝好运!

Related