帳モメのotanuft

Stay hungry, stay foolish.

Jaxor Overview

Jaxor - Model Driven Persistence

Jaxor Overview

JaxorはXMLに書かれたRDBのエンティティの定義を元に インターフェースや、ファインダーなどのJavaのコードを自動生成する、 O/Rマッピングツールです。 特定のコンテナなどに依存していないのでJavaアプリケーションなら なんでも利用できるようです。 ソースコードの生成にはVelocityのテンプレートを使用しています。 JaxorはPatterns of Enterprise Application Architecture [Fowler2003]で書かれている、 Active Record,Data Mapper, Dependent Mapping,Identity Field, Identity Map,Lazy Load,Metadata Mapping,Money,Unit of Work を実装しています。 生成されるコードは、1エンティティに対して以下の10クラス。
  • Baseクラス
  • Entityクラスを実装したクラス
  • Entityクラス
  • Active Recordパターンを実装するエンティティのインターフェース
  • EntityRowクラス
  • エンティティのプロパティとDBのマッピングを定義したクラス
  • Finderクラス
  • スレッドローカルなJaxorのコンテキストで動作する、ファインダークラス
  • FinderBaseクラス
  • クエリーを実行したり、新しいインスタンスを作るクラス
  • Iteratorクラス
  • Iteratorを実装するクラス
  • Listクラス
  • エンティティが格納されるListクラス
  • MetaRowクラス
  • エンティティのメタ情報を扱うクラス
  • Queryクラス
  • クエリを扱うクラス
  • ResultSetクラス
  • ResultSetを扱うクラス
    が生成されます。 使用方法は、エンティティの定義を書いたXMLから、Antを使って自動生成します。 HibernateやTorqueのCriteriaのような、使い方から、 iBATISのようにSQLを直接書くことや、HQL風に書くこともできます。 エンティティの各プロパティに対応した、selectメソッドがあるのが面白いです。 さらに、SQLXMLに定義して、Javaのメソッド化できるようです。 iBATISより使い勝手がいいかも。