徹底比較!! O/Rマッピングツール 4

スキーマ定義ファイルの作成

スキーマ定義ファイルの作成


   次に、スキーマ定義ファイルを作成します。スキーマ定義ファイルは、Antの「JDBC」タスクで作成します。

   JDBCタスクの実行手順は、パッケージ・エクスプローラから「build-torque.xml → 実行 → Antビルド」を選びます。
EclipseによるAntタスクの実行(手順1)
図3:EclipseによるAntタスクの実行(手順1)

   すると、以下のような画面があらわれますので、実行するタスクに「JDBC」のみを選択し、「実行」ボタンを押します。

EclipseによるAntタスクの実行(手順2)
図4:EclipseによるAntタスクの実行(手順2)
(画像をクリックすると別ウィンドウに拡大図を表示します)

   処理が終わると、schemaフォルダにschema.xmlが作成されますので、生成されたファイルを*-schema.xmlという形のファイル名に変更します。ここではproject-schema.xmlというファイル名にしています。スキーマ定義ファイルは以下のとおりです。

スキーマ定義ファイル(project-schema.xml)
スキーマ定義ファイル(project-schema.xml)
(画像をクリックすると別ウィンドウに拡大図を表示します)

   各要素の説明を表3に示します。

タグ名 属性名 説明
database name データベース名を設定する
table name テーブルの名前を設定する
column name 列の名前を設定する
type 列の型の設定する
required 値が必須かどうかを設定する(デフォルトはfalse)
size 数値または文字のサイズを設定する
primaryKey プライマリキーであるかどうかを設定する(デフォルトはfalse)
javaType javaプログラムの中でのこの列の型を設定する(object/primitive)
foreign-key foreignTable 参照するテーブルの名前を設定する
reference local このテーブルの結合する列名を設定する
foreign 参照するテーブルの列名を設定する

表3:スキーマ定義ファイルの各要素の説明


SQLファイル/OMクラス/Peerクラスの作成


   次に、SQLファイル/OMクラス/PeerクラスをAntの「main」タスクを使って作成します。

   OMクラスというのは、テーブル1行に対応したクラスで、Peerクラスというのは、テーブル操作用のクラスです。Antの「main」タスクを実行することによりこれらのクラスを自動生成することができます。

   「main」タスクの実行が成功すると、sqlフォルダにはSQLファイルが、torqueパッケージにはOMクラスとPeerクラスが作成されます。

   作成されたOMクラスとPeerクラスは、ともに「Base」と名のつくクラス(以下Baseクラス)を継承しています。BaseクラスはTorqueが使う基底クラスで、開発者はBaseクラスには手を加えず、Baseクラスを継承したPeerクラスに対して実装していきます。

   なお、SQLファイルはデータベースやテーブル作成などを行う際に使用するファイルですので、今回は使用していません。


Peerクラスの実装


   作成されたPeerクラスに実装をしていきます。実装したPeerクラスは以下のとおりです。

Peerクラス(ShainPeer.java)
public class ShainPeer
   extends torque.BaseShainPeer {

   public static List doJoinBusho(Criteria criteria) throws Exception {
      return doSelectJoinBusho(criteria); 
   }

}

   1のdoSelectJoinBusho()メソッドはjoinを行うためのメソッドで、親クラスのBaseShainPeerクラスに定義されています。BaseShainPeerクラスに定義されているdoSelectJoinBusho()メソッドのアクセス修飾詞はprotectedなので、外部のクラスからアクセスすることはできません。

   そこで、子クラスのShainPeerクラスのpublicメソッドでdoSelectJoinBusho()メソッドを呼び出し、外部のクラスはShainPeerクラスのメソッドを呼び出すようにします。


Torque Runtimeによるアプリケーション実行
   Runtimeは、Generator(開発環境)で作成したクラスを実行する環境を提供します。ですので、まずはGenerator(開発環境)で作成したクラスをRuntime(実行環境)にコピーします。


図5:torque-Runtimeプロジェクト

Torque実行環境用プロパティファイルの修正
   Torque.propertiesはTorque実行環境用のプロパティファイルで、主にJDBC関連の設定を行います。Torque.propertiesはダウンロードしてきたファイルに用意されているので、今回は、その一部を自分の環境用に修正して使用します。 Torque実行環境用プロパティファイル(Torque.properties)の修正箇所抜粋
# build.propertiesのプロジェクト名に合わせる
torque.database.default=postgres
# RDBMSの種類
torque.database.postgres.adapter=postgresql
# JDBC関連の設定(ドライバ、URL、ユーザ名、パスワード)
torque.dsfactory.postgres.connection.driver = org.postgresql.Driver
torque.dsfactory.postgres.connection.url = jdbc:postgresql://localhost:5432/postgres
torque.dsfactory.postgres.connection.user = postgres
torque.dsfactory.postgres.connection.password = password

   torque.database.defaultには、修正したGenerator用設定ファイル(build.properties)のtorque projectと同様の内容を記述します。torque.database.default以下のtorque.database.、torque.dsfactory.プロジェクト名プロジェクト名の部分には、torque.database.defaultで設定したプロジェクト名を記述します。

   各プロパティの説明は以下のとおりです。

役割 プロパティ名 説明 データベースの設定 torque.database.default プロジェクト名(データベース名)を設定する RDBMSの設定 torque.database.プロジェクト名.
adapter
対象のRDBMSの種類を設定する JDBC関連の設定 torque.dsfactory.プロジェクト名.
connection.driver
DB接続時に使用するJDBCドライバを設定する torque.dsfactory.プロジェクト名.
connection.url
DBアクセス時に使用するURLを設定する torque.dsfactory.プロジェクト名.
connection.user
データベースにアクセスするユーザ名を設定する torque.dsfactory.プロジェクト名.
Connection.password
データベースアクセス時のパスワードを設定する

表4:Torque実行環境用プロパティファイルの各プロパティの説明


テスト用実行クラスの作成
   最後に、テスト用実行クラスを作成します。作成したプログラムは以下に示します。

テスト用実行クラス(TorqueExecutor.java)一部抜粋

(画像をクリックすると別ウィンドウに拡大図を表示します)

   Torqueを利用してデータベースにアクセスする場合、基本的にCriteriaクラスを使用します。Criteriaクラスに様々な条件を設定し、Torqueに用意されている各メソッドにCriteriaを渡すと、Torqueが自動的にSQL文を組み立ててくれるためSQL文を書くことなく様々な処理(検索/更新/挿入/削除)を実行できます。

   また、TorqueのDTOにあたるOMクラスにはsave()メソッドが用意されており、このメソッドを使用することで更新、挿入処理を簡単に行うことができます。更新か挿入かの判断はsave()メソッドが自動的に判断してくれます。


テスト用プログラムの実行
   テスト用プログラムを実行します。実行結果は以下のとおりです。

実行結果
-----検索(JOIN)結果-----
社員ID = 333
社員名 = Torque
部署名 = 管理部


-----挿入結果-----
部署ID = 3
部署名 = 管理部
内線番号 = 3456
部署ID = 4
部署名 = 営業部(Torque)
内線番号 = 9876


-----更新結果-----
部署ID = 3
部署名 = 管理部
内線番号 = 3456
部署ID = 4
部署名 = 営業部(Torque)
内線番号 = 6789


-----削除結果-----
部署ID = 3
部署名 = 管理部
内線番号 = 3456


まとめ
   今回はTorqueについて見てきました。TorqueではSQL文を書かずにデータベースにアクセスすることができます。この点が「iBATIS」と決定的に異なる点です。SQL文を書かないためデータベースの方言の違いも意識する必要はありません。また、joinのためのメソッドも用意されているため「iBATIS」では強く意識しなければならなかった関連についても、さほど意識する必要がありません。

   しかし、SQL文を記述できない(実際には記述可能だが、SQLを多用するとToqueを使う意味が薄れてしまう)ため、データの検索や更新時のパフォーマンスチューニングなどの柔軟な対応はできません。

   Torqueは、データ構造がシンプルでパフォーマンスチューニングなどの必要性がないシステムでは有効なフレームワークであるといえるのではないでしょうか。

   次回は、「Hibernate」について見ていきたいと思います。

この記事をシェアしてください

人気記事トップ10

人気記事ランキングをもっと見る