0

PostgreSQL をデータベースとして使用する Web アプリケーションがあります。

Hibernate を使用してデータを保存しようとしているようなシナリオを想定します。データベースサーバーがダウンした場合、データを保存する直前に何が起こったのでしょうか?

Hibernate は保存を再試行するか、再試行コードを記述する必要がありますか。

どんな助けでも大歓迎です。

4

1 に答える 1

1

いいえ、Hibernate はデータの保存を再試行しません。データベースの障害により、トランザクションが失敗し、すべての変更がロールバックされます。
さらに悪いことに、接続プールを正しく構成しないと、データベースが再び実行されたときに接続を再確立できなくなります。詳細については、この質問をご覧ください。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>
于 2013-01-21T08:56:04.697 に答える