我目前使用spring來進行注入。 Hibernate使用postgres方言進行正常運行,但我想使用HSQL進行DBUnitils數據庫測試。Java:DBunitils + Spring:不同的Hibernate-Dialect
我Spring的配置包含此:
<!-- Hibernate session factory -->
<bean id="sessionFactory"
class="org.springframework.orm.hibernate3.annotation.AnnotationSessionFactoryBean">
<property name="dataSource" ref="dataSource"/>
<property name="hibernateProperties">
<props>
<prop key="hibernate.dialect">${hibernate.dialect}</prop>
<prop key="hibernate.show_sql">${hibernate.show_sql}</prop>
<prop key="use_outer_join">${hibernate.use_outer_join}</prop>
<prop key="hibernate.cache.use_second_level_cache">${hibernate.cache.use_second_level_cache}</prop>
<prop key="hibernate.cache.use_query_cache">${hibernate.cache.use_query_cache}</prop>
<prop key="hibernate.cache.provider_class">${hibernate.cache.provider}</prop>
<prop key="hibernate.connection.pool_size">10</prop>
<prop key="hibernate.jdbc.batch_size">1000</prop>
<prop key="hibernate.bytecode.use_reflection_optimizer">true</prop>
</props>
</property>
<property name="annotatedClasses">
<list>
<value>de.dbruhn.relations.model.Relation</value>
<value>de.dbruhn.relations.model.RelationData</value>
<value>de.dbruhn.relations.model.RObject</value>
<value>de.dbruhn.relations.model.Type</value>
</list>
</property>
<property name="schemaUpdate" value="${hibernate.schemaUpdate}"/>
</bean>
字段得到Maven的資源過濾取代。
彈簧Configruation爲DBUnitils包含此:
<bean id="dataSource" class="org.unitils.database.UnitilsDataSourceFactoryBean"/>
</beans>
,因此從與UnitilsDataSource我跑的配置將覆蓋數據源。
問題:我不能使用Postgres-Dialect對HSQL測試數據庫運行測試,因爲有些命令不工作。 我想到的唯一解決方案是:切換maven中的資源過濾器,但我必須手工完成(通過在每個maven調用中提供「-P TEST」)。那麼重寫hibernate.dialect是不是有可能?
謝謝!
這對我有幫助嗎?我是否必須將整個會話工廠bean複製到第二個ApplicationContext.xml?即使我將所有常量放入屬性文件中,我也必須保持文件同步(例如annotatedClasses)。 – theomega 2009-09-16 20:10:16