16

私は本番環境で Oracle を使用しており、テストには H2 を使用したいと考えています。私は文字が打てます;

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

私のテーブルとスクリプトは自動的に作成されます。しかし、このデータベースの URL 値を設定できません。(H2-Oracle との互換性のために、URL 部分に ;MODE=Oracle を追加する必要があります)

この目標を達成する方法はありますか?

または、正反対の解決策です。

<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 部分を編集できますが、このデータソースにデフォルトのテスト スクリプト (create および data sql) をロードするにはどうすればよいですか?

4

2 に答える 2

22

この手法で問題は解決しました。

<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>
于 2011-11-18T10:58:55.183 に答える
13

多分これが役立つでしょう: 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'"/>

(;バックスラッシュでエスケープする必要があります)。

于 2011-11-17T19:11:33.750 に答える