Torque

作成 2003/6/7

実験環境

Torqueって?

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サイトで、あちこち解説されているのと、 微妙に不明点(設定ファイルの問題だと思うが...)があるので、ここではやめときます。 基本的な流れは以下のようになります。

ジェネレータ

ランタイム

感想

なかなか使いやすいです。EJBを使わない場面で、すいすい開発を進められそうです。 ただ、複雑なSELECT文は、やはりSQLを書かないと辛そうな気がします TODOリストに組み込みQuerryというのがありましたが。 まだ、ちょっと調査不足かなぁ。。。
TOP