作成 2003/6/7
実験環境
Torque(とるく)はObject Relationalマッピングツール(RDBとJavaオブジェクトのマッピングツール)です。 ORマッピングツールには、他にOJB、Hibernate、JDO(これは仕様?)などがありますが、 Torqueは、その中でも最近注目の技術です。 Torqueは元々、Jakarta Turbineのサブプロジェクトとして開発されていましたが、 現在は、Apache DBプロジェクトに移動し、単独で利用できるようになっています。
Javaでデータベースへ一行追加プログラムを書く場合、 素直に書くとこんな感じです。
PreparedStatement stmt = con.prepareStatement( "INSERT INTO author(author_id,last_name,first_name) VALUES(?,?,?)"); stmt.setInt(1, 123); stmt.setString(2, "Joshua"); stmt.setString(3, "Bloch"); stmt.executeUpdate();
これをTorqueで書くと、こうなります。
Author author = new Author(); author.setFirstName("Joshua"); author.setLastName("Bloch"); author.save();
save()でいいなんて、簡単ですね。 しかも、Connectionの開放忘れ、SQLの記述ミスなどを考えると、 さらに簡単な気がします。
て、Authorクラスって何だ?となりますが、 AuthorはRDBのオブジェクトマッピングクラスで、 Torqueのジェネレータを使って、このクラスを自動生成します。 生成はXMLスキーマ定義から行うことができます。 あっちからこっちと相互に変換可能なので、 XMLスキーマ定義を書いて、 RDBのテーブルとOMクラスを作成することもできれば、 既存のRDBテーブルからXMLスキーマとOMクラスを生成というのもできます。
図、Torqueジェネレータであれこれ自動生成
生成はAntのタスクを使って行います。 また、jdbcタスクにはJDBCメタデータが使われ、 omタスク(とdocタスク)にはVelocityが使われおり、 技術の使われ方も興味深いです。
Torque Webサイト
http://db.apache.org/torque/
Jakarta Torque Tutorial
http://www.ad.cyberhome.ne.jp/~milmil/java/torque-menu.html
nekop.programmers.jp - ORMappingTools
http://nekop.programmers.jp/hiki/hiki.cgi?ORMappingTools
TorqueのWebサイトからバイナリをダウンロードします。 3.1からジェネレータとランタイムのモジュールが分割されています。 生成はジェネレータ、実行にはランタイムが必要です。 ドキュメントやビルドモジュールが、あちこちでバギーだと言われていましたが、 ようやく整備されてきたようで、 チュートリアルに従ってやって、それなりに動きました。
簡単な手順を書こうかと思いましたが、 既に日本語でも、雑誌やWebサイトで、あちこち解説されているのと、 微妙に不明点(設定ファイルの問題だと思うが...)があるので、ここではやめときます。 基本的な流れは以下のようになります。