H2へのDBアクセス

プロトタイプをDB対応するべく、H2DBを導入してみた。まずはpom.xmlに以下を追加。

<!-- pom.xml -->
<dependency>
  <groupId>com.h2database</groupId>
  <artifactId>h2</artifactId>
  <version>1.0.67</version>
</dependency>

versionはMavenのセントラルリポジトリhttp://repo1.maven.org/maven2)を見て確認。次にsrc/main/resourcesのjdbc.diconに以下の設定を追加。

<!-- jdbc.dicon -->
<component name="xaDataSource"
  class="org.seasar.extension.dbcp.impl.XADataSourceImpl">
  <property name="driverClassName">"org.h2.Driver"</property>
  <property name="URL">"jdbc:h2:mem:?ignorecase=true"</property>
  <property name="user">"sa"</property>
  <property name="password">""</property>
</component>

プロトタイプだし永続化させる必要がないので、オンメモリで動作させる。まぁcubby-exmplesにあった設定をそのまま持ってきただけなんだけど。

これでDB導入の準備は出来た。後はTomcatを起動するとH2も同時に起動するはず。なんだけど、正常に動作していることを確認したいので、実際にデータを投入してみて、値が取得出来るか試してみる。cubby-examplesを見るとServletRequestListenerのサブクラスでテーブル作成&データ投入をしていたのでそれを真似てみた。ここはそのままなので割愛。

次にDaoを用意。これは当然S2Daoを利用。

// UserDao.java
@S2Dao(bean=User.class)
public interface UserDao {
    User selectById(String userId);
}
// User.java
@Bean(table="tbl_user")
public class User {
    :
    :
}

以上の設定で実際に動作させてみたところ、DBからデータを取得することが出来た。H2って便利だな〜。これでSQLさえ用意しておけば、データ云々を考えなくて済む。良かったよかった。