问题描述
我有一个弹簧应用程序,它对 DB 进行最少的操作。 我有一个要求,我的应用程序应该在没有 DB 的情况下运行(或当 db 关闭时)。下面是我的数据源配置。
<bean id="dt31DataSource" class="com.mchange.v2.c3p0.ComboPooledDataSource" destroy-method="close" depends-on="systemPropertyInitializer"
p:driverClass="${dt31.driver_class}"
p:jdbcUrl="${dt31.url}"
p:user="${dt31.username}"
p:password="${dt31.password}"
p:idleConnectionTestPeriod="1000"
p:maxPoolSize="4"
p:minPoolSize="2"
p:maxIdleTime="2000"
p:unreturnedConnectionTimeout="600"
p:contextClassLoaderSource="library"
p:privilegeSpawnedThreads="true"
p:initialize=false
/>
<bean id="dt31SessionFactory" class="org.springframework.orm.hibernate4.LocalSessionFactoryBean">
<property name="dataSource" ref="dt31DataSource"/>
<property name="packagesToScan" value="com.t22.dt31"/>
<property name="hibernateProperties">
<props>
<prop key="hibernate.dialect">
${dt31.dialect}
</prop>
<prop key="hibernate.show_sql">
false
</prop>
<prop key="hibernate.hbm2ddl.auto">
update
</prop>
</props>
</property>
</bean>
我在 google 中找到了一个,说在 spring 数据源配置中使用“初始化:false”。但我使用的是没有此属性的“ComboPooledDataSource”数据源。还有其他方法可以实现吗?
1楼
应用服务层可以操作两个 DAO 层(文件系统和数据库),因此当数据库关闭时,您可以捕获连接获取异常并切换到文件系统。
拥有两个真实来源将很难在两个不同的数据源之间保持一致性,尤其是在一种资源不可用的情况下。
当这两种资源都可用时,您可以使用和 Bitronix 进行 XADataSource 和 JTA 事务管理。