Derbyの使い方

TopLink Essentialsがサポートしている組み込みDBの中で、TopLinkのサポートが最もしっかりしているのは、現時点ではDerbyです。HSQLDBをサポートするクラスも存在するのですが、JPQLのサポートなどが充実していません。そこで、S2TopLinkもDerbyを添付してます。
・・・が、Seasar2jdbc.diconにはDerbyの設定がないことに気づきました。
というわけで、簡単にDerby設定方法など・・・

	<!-- for Derby -->
	<component name="xaDataSource"
		class="org.seasar.extension.dbcp.impl.XADataSourceImpl">
		<property name="driverClassName">
			"org.apache.derby.jdbc.EmbeddedDriver"
		</property>
		<property name="URL">
			"jdbc:derby:"
				+ @org.seasar.framework.util.ResourceUtil@getBuildDir(@example.Test@class).getCanonicalPath()
				+ "/derby"
		</property>
		<property name="user">""</property>
		<property name="password">""</property>
	</component>

example.Testというクラスが存在するクラスパスのルートに、derbyというディレクトリが存在すれば、Derbyはここを見に行くようになります。ただし、先にデータを入れておかなければなりません。そこで、Derbyに付属しているijというツールを使います。

java org.apache.derby.tools.ij

とコマンドに入力すると

ij バージョン 10.2
ij> 

このような入力待ち画面になります。ここで、

ij>connect 'jdbc:derby:{jdbcで定義したderbyディレクトリまでのフルパス};create=true';

と入力すると、Derby用のディレクトリが指定した場所に自動的に作成されます(ディレクトリはDerbyに作らせないといけないみたいです。既にディレクトリが存在するとエラーになってしまいました)。あとは、コマンド上でCREATE文などを実行すればOK

ij>run '{SQLファイルのフルパス}';

とコマンド入力すれば、SQLファイルを実行することもできます。