0
我有一個使用PostgreSQL作爲數據庫的Web應用程序。如何使用Hibernate保存數據時處理數據庫服務器故障?
假設像我想使用Hibernate保存()數據的情況。現在就在數據庫服務器關閉的情況下保存數據之前,發生了什麼?
Hibernate會重新嘗試保存,或者我必須編寫重試代碼。
任何幫助將不勝感激。
我有一個使用PostgreSQL作爲數據庫的Web應用程序。如何使用Hibernate保存數據時處理數據庫服務器故障?
假設像我想使用Hibernate保存()數據的情況。現在就在數據庫服務器關閉的情況下保存數據之前,發生了什麼?
Hibernate會重新嘗試保存,或者我必須編寫重試代碼。
任何幫助將不勝感激。
不,Hibernate不會重新保存你的數據。數據庫故障將導致您的事務失敗,並且所有更改都將被回滾。
更糟糕的是,如果您沒有正確配置連接池,那麼當數據庫將再次運行時,將無法重新建立連接。看看this question瞭解更多信息。我複製並粘貼c3p0配置。
<c3p0-config>
<default-config>
<!-- Configuring Connection Testing -->
<!-- property name="automaticTestTable">TEST_EMS_HIBERNATE_CONN</property -->
<property name="checkoutTimeout">0</property>
<property name="testConnectionOnCheckout">true</property>
<property name="testConnectionOnCheckin">false</property>
<property name="preferredTestQuery">SELECT 1 from dual</property>
<!-- Configuring Recovery From Database Outages -->
<property name="acquireRetryAttempts">0</property>
<property name="acquireRetryDelay">1000</property>
<property name="breakAfterAcquireFailure">false</property>
<!-- Configuring to Debug and Workaround Broken Client Apps -->
<property name="unreturnedConnectionTimeout">1800</property>
<property name="debugUnreturnedConnectionStackTraces">true</property>
</default-config>
謝謝。我已經使用c3p0屬性,但不是你提到的所有屬性。我會按照你的建議去嘗試所有的東西。 –
@ManojKathiriya,不客氣。請,如果這是您的解決方案,upvote /接受它(也許upvote我提供的鏈接的第一個答案) – ThanksForAllTheFish
因爲我現在配置根據你給出的建議,而不是面臨任何問題。 –