Весеннее тестирование с конфигурацией H2 db

Я использую Oracle в производственной среде, и я хотел бы использовать H2 для тестирования. Я могу печатать;

<jdbc:embedded-database id="dataSource">
  <jdbc:script location="classpath:schema.sql"/>
  <jdbc:script location="classpath:test-data.sql"/>
</jdbc:embedded-database>

поэтому мои таблицы и сценарии создаются автоматически. Но я не могу установить значение URL этого db. (Для совместимости с H2-Oracle я должен добавить ;MODE=Oracle к части URL)

есть ли способ достичь этой цели?

Или просто противоположное решение;

<bean id="dataSource" class="org.springframework.jdbc.datasource.DriverManagerDataSource">
    <property name="driverClassName" value="org.h2.Driver"/>
    <property name="url" value="jdbc:h2:file:h2\db"/>
    <property name="username" value="sa"/>
    <property name="password" value=""/>        
</bean>

в это время я могу редактировать часть URL, но как я могу загрузить тестовые сценарии по умолчанию (создание и данные sql) в этот источник данных?


person asyard    schedule 17.11.2011    source источник


Ответы (2)


Этот метод решил проблему;

<bean id="dataSource"
        class="org.springframework.jdbc.datasource.DriverManagerDataSource">
        <property name="driverClassName" value="${jdbc.driverClassName}" />
        <property name="url" value="${jdbc.url}" />
        <property name="username" value="${jdbc.username}" />
        <property name="password" value="${jdbc.password}" />
</bean>

а затем добавить этот тег и определение;

<jdbc:initialize-database data-source="dataSource" ignore-failures="DROPS">
    <jdbc:script location="classpath:testdb/schema.sql" />
    <jdbc:script location="classpath:testdb/data.sql" />
</jdbc:initialize-database>
person asyard    schedule 18.11.2011
comment
Каково содержимое этих файлов? schema.sql и data.sql содержат ли они что-то, что вам нужно настроить? - person wlk; 29.02.2012
comment
привет, Войтек, да, мне нужны начальные тестовые данные. Некоторое содержимое - это IP-адреса многих серверов, некоторые роли пользователей, названия городов и т. д. - person asyard; 03.03.2012

Возможно, это поможет: H2 поддерживает скрипт INIT (скрипт SQL, который выполняется при открытии связь). URL-адрес базы данных будет выглядеть в XML-файле следующим образом:

<property name="url" value="jdbc:h2:file:h2\db;INIT=
RUNSCRIPT FROM 'classpath:schema.sql'\;
RUNSCRIPT FROM 'classpath:test-data.sql'"/>

(; нужно экранировать обратной косой чертой).

person Thomas Mueller    schedule 17.11.2011
comment
спасибо за ваш ответ, моим лучшим выбором было использование подхода Spring (jdbc:initialize-database.. и т. д.) без расширения URL-адреса значениями. Эта техника также полезна. Спасибо. - person asyard; 18.11.2011