Java: DBunitils + Spring: другой Hibernate-диалект - PullRequest
0 голосов
/ 16 сентября 2009

В настоящее время я использую пружину для внедрения зависимостей. Hibernate использует диалект postgres для нормального запуска, но я хочу использовать HSQL для DBUnitils Databank-Testing.

Моя Spring-Configuration содержит это:

<!-- 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.

Spring-Configruation для DBUnitils содержит следующее:

<bean id="dataSource" class="org.unitils.database.UnitilsDataSourceFactoryBean"/>
</beans>

и так переопределяет источник данных из моей конфигурации запуска с помощью UnitilsDataSource.

Проблема: я не могу запустить тесты с использованием Postgres-Dialect для HSQL-Test-Database, потому что некоторые команды не работают. Единственное решение, которое пришло мне в голову: переключить фильтр ресурсов в maven, но я должен сделать это вручную (путем предоставления "-P TEST" при каждом вызове maven). Так нет ли возможности переопределить hibernate.dialect?

Спасибо!

Ответы [ 2 ]

4 голосов
/ 16 сентября 2009

Обычно вам вообще не нужно указывать диалект, Hibernate выяснит это, посмотрев на основной источник данных. Диалект нужно указывать только в том случае, если вы хотите, чтобы Hibernate использовал определенный.

В вашем случае вы просто сможете полностью удалить свойство dialect, и оно должно работать в postgres и hsql без изменения конфигурации.

0 голосов
/ 16 сентября 2009

Возможно, вам стоит взглянуть на использование PropertyPlaceHolderConfigurer весной для изменения конфигурации. Таким образом, вам нужно только предоставить другой файл конфигурации для разных сред, Spring xml остается прежним.

И вы можете загрузить файл конфигурации как this .

...