2011-11-17 11 views
16

私はOracleを運用環境で使用しています。私はテストにH2を使用したいと思います。私は文字が打てます;H2データベースを使用したSpringテスト

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

ので、私のテーブルとスクリプトが自動的に作成されます。しかし、私はこのdbのURL値を設定することはできません。 (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部分を編集できますが、このデータソースにデフォルトのテストスクリプト(createとdata sqls)をロードするにはどうすればよいですか?

答えて

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> 
+0

これらのファイルの内容は何ですか? schema.sqlとdata.sqlには、セットアップが必要なものが含まれていますか? – wlk

+0

こんにちは、私は初期のテストデータが必要です。いくつかの内容は、多くのサーバーのIPアドレス、ユーザー役割、都市名などです。 – asyard

13

多分これは役に立ちます:H2はINIT script(接続を開くときに実行されるSQLスクリプト)をサポートします。

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

;は、バックスラッシュでエスケープする必要があります):データベースのURLは、XMLファイルに次のようになります。

+0

私の最善の選択は、値を指定してURLを拡張せずにSpring提供の手法(jdbc:initialize-database ..など)を使用していたことです。このテクニックも役に立ちます。ありがとうございました。 – asyard

関連する問題