我有一个使用 PostgreSQL 作为数据库的 Web 应用程序。
假设我正在尝试使用 Hibernate 保存()数据。现在就在保存数据之前,如果数据库服务器将关闭,那么发生了什么?
Hibernate 将再次尝试保存,或者我是否必须编写重试代码。
任何帮助将不胜感激。
我有一个使用 PostgreSQL 作为数据库的 Web 应用程序。
假设我正在尝试使用 Hibernate 保存()数据。现在就在保存数据之前,如果数据库服务器将关闭,那么发生了什么?
Hibernate 将再次尝试保存,或者我是否必须编写重试代码。
任何帮助将不胜感激。
不,Hibernate 不会重新尝试保存您的数据。db 失败将导致您的事务失败,并且所有更改都将被回滚。
更糟糕的是,如果您没有正确配置连接池,当数据库再次运行时,您将无法重新建立连接。看看这个问题以获取更多信息。我复制并粘贴 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>