hsqldbを使用して、データベースアクセスを必要とする単体テストを実行します。
今のところ、特定のテスト用のテーブルを作成したい場合、次のコードがあります。
private void createTable() {
PreparedStatement ps;
try {
ps = getConnection().prepareStatement("CREATE TABLE T_DATE (ID NUMERIC PRIMARY KEY, DATEID TIMESTAMP)");
ps.executeUpdate();
} catch (SQLException e) {
e.printStackTrace();
}
}
このメソッドは、コンテキストgetConnection()
で定義されたデータソースを取得します。Spring
<bean id="dataSource" class="org.springframework.jdbc.datasource.DriverManagerDataSource">
<property name="driverClassName" value="org.hsqldb.jdbcDriver"/>
<property name="url" value="jdbc:hsqldb:mem:memoryDB"/>
<property name="username" value="SA"/>
<property name="password" value=""/>
</bean>
ここで、SQLスクリプトからテーブルを作成したいと思います(もちろん、このスクリプトには複数のテーブル作成が含まれます)。
CREATE TABLE T_DATE_FOO (ID NUMERIC PRIMARY KEY, DATEID TIMESTAMP);
CREATE TABLE T_DATE_BAR (ID NUMERIC PRIMARY KEY, DATEID TIMESTAMP);
...
HSQLDBのドキュメントで、起動時にスクリプトを実行するように依頼できることがわかりました。ただし、実行時にスクリプトを実行したいので、要件を満たしていません。
もちろん、自分でファイルを読み取ることもできます。すべてのSQLステートメントに対してps.executeUpdate()
コマンドを実行しますが、この種のソリューションは使用したくありません(他にソリューションがない場合を除く)。
何か案が?