俺の開発研究所

Ruby on Rails、Linux、Windowsを中心にIT技術系の備忘録とか。よく忘れるので。

*

Java(Seasar2)-S2JDBC(S2JDBC-Gen)でPostgreSQLを使用する

      2015/03/07

前回は、Java(Seasar2)-SAStruts、S2JDBCの開発環境構築手順について書き、Doltengプラグインでプロジェクトを生成しました。

前回の記事はこちら⇒EclipseのJava(Seasar2)-SAStruts、S2JDBC開発環境構築手順

今回は、「S2JDBC」をもう少し触ってみようと思います。

Java(Seasar2)の「S2JDBC」は、DBのアクセスとJavaオブジェクトの変換を行うO/Rマッピングのフレームワーク。

S2JDBC-Gen」という「S2JDBC」を使用した開発をサポートするツールがあり、こいつがなかなか便利で、データベースの実テーブルからエンティティクラス・サービスクラス・DLLを自動生成し、マイグレーション・ロールバックを行うことができるのです。

まあとりあえず少し触ってみる。

なお、今回のバージョンは以下です。

  • Windows 7 Professional SP1(32bit)
  • Eclipse 4.2 Juno
  • JDK 7u15
  • Apache Tomcat 7.0.35
  • PostgreSQL 9.2

スポンサード リンク

S2JDBCの設定ファイルの編集

S2JDBCでは、データベースに関する設定ファイルが「s2jdbc.dicon」、「jdbc.dicon」の2つ。

どちらも有名どころのデータベースに関する記述例が用意されているので、そのコメントアウトを外し、自分の環境用に修正して使えばOK。

まずは、「/sample/src/main/resources/s2jdbc.dicon」。

続いて、「/sample/src/main/resources/jdbc.dicon」。

PostgreSQLのJDBCドライバのダウンロードとJar追加

S2JDBCでは、PostgreSQLのJDBCドライバは用意されていないため、自分でダウンロードして設定してやる必要がある。

PostgreSQL JDBCドライバ公式サイトより、JDBCドライバをダウンロードする。

PostgreSQLとJDKのバージョンによってドライバが異なるので注意。

今回は、「PostgreSQL 9.2」と「JDK 1.7」の為、「9.2-1004 JDBC 41」である。

ダウンロードしたファイルは「postgresql-9.2-1004.jdbc41.jar」。

「ナビゲーター」、「プロジェクトエクスプローラー」、「パッケージエクスプローラー」上のプロジェクトを右クリック⇒「プロパティ」を開く。

左側で「Javaのビルド・パス」を開く。

「ライブラリー」タブで「外部Jar追加」ボタンで、ダウンロードしたJDBCドライバ(Jarファイル)を指定し、追加する。

これで、PostgreSQLへ接続できるはず…だったが、以下のように「org.postgresql.Driver」クラスが見つからないというエラーに。

原因は、「/sample/src/main/webapp/WEB-INF/lib」に追加したJarファイルがないため。

なぜないのかはいまいち不明だが、コピーしたら動いたから詳細追求は後回し。

S2JDBC-Genを使用して自動生成

ここまでの設定で、S2JDBC(S2JDBC-Gen)でPostgreSQLを使用する為の準備が整った。

今回はDoltengプラグインを使用してプロジェクトを生成したので、S2JDBC-Genを使用するための「s2jdbc-gen-build.xml」ファイルがプロジェクト直下にあるはずだ。

S2JDBC-Genはこのファイルを使用し、Antビルドすることで、エンティティクラスなどの自動生成を行うことができる。

流れは以下のよう。

S2JDBC-Gen

実行の仕方は、「ナビゲーター」、「プロジェクトエクスプローラー」、「パッケージエクスプローラー」上の「s2jdbc-gen-build.xml」ファイルを右クリック⇒「外部ツールの構成」を開く。

左側の「Ant」⇒「sample s2jdbc-gen-build.xml」を選択し、右側の「ターゲット」タブで実行する以下の機能を選択し、「実行」ボタンで実行できる。

  • 「gen-entity」…実テーブルからエンティティクラス・サービスクラスの自動生成
  • 「gen-ddl」…実テーブルからDDLの自動生成
  • 「migrate」…DDLを使用して、データベーススキーマを再作成
  • 「rollback」…バージョンを戻す
  • 「dump」…CSV形式のダンプデータを生成

実際にやってみた。

まずは、データベースに実テーブルを作成し、データ登録してみる。

続いて、実テーブルからエンティティクラスを生成する。

「ナビゲーター」、「プロジェクトエクスプローラー」、「パッケージエクスプローラー」上の「s2jdbc-gen-build.xml」ファイルを右クリック⇒「外部ツールの構成」を開き、「ターゲット」タブで「gen-entity」にチェックし、実行する。

そうすると、「entity」、「service」にソースが自動生成されている。

さらに同様に、「ナビゲーター」、「プロジェクトエクスプローラー」、「パッケージエクスプローラー」上の「s2jdbc-gen-build.xml」ファイルを右クリック⇒「外部ツールの構成」を開き、「ターゲット」タブで「gen-ddl」にチェックし、実行する。

そうすると、プロジェクト直下の「/sample/db/migrate/バージョンNo/」にDDLが自動生成されている。

「/sample/db/ddl-info.txt」には現在のバージョンNoが設定されているみたいだ。

とりあえず、うまくいってよかった。

参考サイト

Seasar2 – S2JDBC-Gen – S2JDBC-Genとは

 - Java, Java(Seasar2), PostgreSQL