用資料庫連接池解決org.hibernate.exception.JDBCConnectionException:could not execute query

來源:互聯網
上載者:User

嘚啵嘚嘚啵嘚.

---幸運皮

我想來想去,還是要說一下問題出現的情景,吼吼~

本來運行不錯,後來老師跟我說,每次早上去上班訪問網站的時候就會出現這個問題,重啟一下tomcat就好了,等第二天就又出現這樣的問題.

後來我查了一下,原來是資料庫連接逾時的問題,但是,第一次改好後,我以為改好了,因為要等一天的時間(至少是8個小時)去驗證呢,結果,過了兩天,老師來郵件說,不行,還是那樣.

後來,我就納悶了,怎麼驗證好了之後再去給老師呢...

後來,在網上一篇文章上說到了修改系統時間,哦哦哦,原來可以這樣,所以,這次用修改系統時間的方式來驗證了一下,成功了,然後再給老師.

ok,囉嗦完了.

上次好像說到了用修改資料庫系統參數的方式來解決長時間不串連出現的問題,但是,那並不是根本的解決方式.在網上查了一下,原來可以用資料庫連接池來解決這個問題,這可是從根本上的解決.

這位大神:http://blog.csdn.net/isnotsuitable/article/details/6990505 總結了一下,hibernate支援的串連池有這幾個:

1.DriverManagerConnectionProvider:代表由Hibernate提供的預設的資料庫連接池 

2.C3P0ConnectionProvider:代表C3P0串連池

3.ProxoolConnectionProvider:代表Proxool串連池

4.DBCPConnectionProvider:代表DBCP串連池

而文檔中推薦的是用C3P0,所以就按照這種方式解決:

步驟如下:

步驟一:

匯入C3P0.jar.

步驟二:

在hibernate.cfg.xml中添加C3P0的配置:

<!-- 配置串連池 --><property name="hibernate.connection.provider_class">               org.hibernate.connection.C3P0ConnectionProvider            </property>            <property name="c3p0.acquire_increment">1</property>            <property name="c3p0.idle_test_period">300</property>            <property name="c3p0.max_size">20</property>           <property name="c3p0.max_statements">100</property>            <property name="c3p0.min_size">5</property>            <property name="c3p0.timeout">90</property>            <property name="c3p0.preferredTestQuery ">select 1 from user where id=1</property>            <property name="c3p0.idleConnectionTestPeriod ">18000</property>                      <property name="c3p0.maxIdleTime">25000</property>                    <property name="c3p0.testConnectionOnCheckout">true</property>

hibernate.cfg.xml檔案:

<?xml version="1.0" encoding="UTF-8"?>  <!DOCTYPE hibernate-configuration PUBLIC     "-//Hibernate/Hibernate Configuration DTD 3.0//EN"     "http://hibernate.sourceforge.net/hibernate-configuration-3.0.dtd"><hibernate-configuration><session-factory><!-- 配置事務實現方式 --><property name="transaction.factory_class">org.hibernate.transaction.JDBCTransactionFactory</property><!-- 配置JDBC裡batch的大小 --><property name="jdbc.batch_size">50</property><property name="cache.use_second_level_cache">false</property><!-- 配置安全執行緒的session --><property name="current_session_context_class">thread</property><!-- 顯示SQL --><property name="show_sql">false</property><property name="format_sql">false</property><!-- 設定資料庫方言 --><property name="dialect">org.hibernate.dialect.MySQLDialect</property><!-- 設定資料庫串連 --><property name="connection.driver_class">com.mysql.jdbc.Driver</property><property name="connection.username">root</property><property name="connection.password">111111</property><property name="connection.url">jdbc:mysql://localhost:3306/alumnus</property><!-- 配置串連池 --><property name="hibernate.connection.provider_class">               org.hibernate.connection.C3P0ConnectionProvider            </property>            <property name="c3p0.acquire_increment">1</property>            <property name="c3p0.idle_test_period">300</property>            <property name="c3p0.max_size">20</property>           <property name="c3p0.max_statements">100</property>            <property name="c3p0.min_size">5</property>            <property name="c3p0.timeout">90</property>            <property name="c3p0.preferredTestQuery ">select 1 from user where id=1</property>            <property name="c3p0.idleConnectionTestPeriod ">18000</property>                      <property name="c3p0.maxIdleTime">25000</property>                    <property name="c3p0.testConnectionOnCheckout">true</property>           <!-- 指定hibernate管理的對應檔 --><mapping resource="com/alumnus/data/Users.hbm.xml" /><mapping resource="com/alumnus/data/Alumnus.hbm.xml" /><mapping resource="com/alumnus/data/Register.hbm.xml" /></session-factory></hibernate-configuration>

這樣,就不會再出現錯誤啦.

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.