実稼働環境で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部分を編集できますが、デフォルトのテストスクリプト(作成およびデータSQL)をこのデータソースにロードするにはどうすればよいですか?
この手法で問題は解決しました。
<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>
たぶんこれは役立つでしょう:H2は INITスクリプト (接続を開くときに実行されるSQLスクリプト)をサポートします。 XMLファイルでは、データベースのURLは次のようになります。
<property name="url" value="jdbc:h2:file:h2\db;INIT=
RUNSCRIPT FROM 'classpath:schema.sql'\;
RUNSCRIPT FROM 'classpath:test-data.sql'"/>
(;
バックスラッシュでエスケープする必要があります)。