Hibernate MySql 連線池隔天斷開

2021-08-02 18:48:52 字數 996 閱讀 1050

問題原因

mysql預設是自動關閉空閒超過8小時的連線,而c3p0並不知道該connection已經失效,如果這時有client請求connection,c3p0將該失效的connection提供給client,將會造成異常。重啟tomcat操作會使c3p0重新建立和資料庫的連線池,且池內的連線都是有效的連線。

解決方法

c3p0要在8小時內關閉不使用的連線。這需要修改其中的一些配置引數,主要是maxidletime和idleconnectiontestperiod。這兩個引數的值要小於28800秒。

建議配置如下:

name="hibernate.c3p0.validate">trueproperty>

name="hibernate.c3p0.idle_test_period">18000property>

name="hibernate.c3p0.timeout">25000property>

附上在 hibernate中配置c3p0的關鍵字

c3p0.acquireincrement           hibernate.c3p0.acquire_increment 

c3p0.idleconnectiontestperiod hibernate.c3p0.idle_test_period

c3p0.maxidletime hibernate.c3p0.timeout

c3p0.maxpoolsize hibernate.c3p0.max_size

c3p0.maxstatements hibernate.c3p0.max_statements

c3p0.minpoolsize hibernate.c3p0.min_size

hibernate mysql寫入中文亂碼 解決

啟動hibernate專案,自動建立表,插入資料之後發現寫入表裡的資料裡的中文是亂碼。按如下方法解決了 修改資料庫的字符集為utf 8,這個可以通過mysql的客戶端軟體裡右鍵要修改的資料庫的屬性更改。修改client預設字符集為utf8。windows下在mysql安裝目錄 我的計算機作業系統是w...

hibernate mysql寫入中文亂碼

啟動hibernate專案,自動建立表,插入資料之後發現寫入表裡的資料裡的中文是亂碼。按如下方法解決了 修改資料庫的字符集為utf 8,這個可以通過mysql的客戶端軟體裡右鍵要修改的資料庫的屬性更改。或者在命令列裡面建立資料庫的時候指定字符集。修改client預設字符集為utf8。windows下...

解析Hibernate MySQL中文亂碼問題

如果是windows系統,那麼系統預設的本地字符集是gb2312,為了讓資料表也使用gnlgovcxb2312字程式設計客棧符集,我們要這樣編寫建立資料表的sql語句 複製 如下 create table test default char程式設計客棧acter set gb2312 然後在hibe...