アノテーション処理

Annotation Processing Tool (apt) を利用すると、ソースコードの自動生成や検証をコンパイル時に行うことができます。

DomaではこのAPIを利用し、@Entityや@Daoと言ったアノテーションが注釈されたクラスやインタフェースを処理し、必要なクラスを自動生成します。 また、注釈されたクラスやインタフェースの検証を行い、Domaの規約に従っていないソースコードがある場合は エラーメッセージをIDE(Eclipseなど)のエディタやjavacを実行したコンソール上に表示します。

注釈処理にはオプションを与えることができます。 Domaで定義しているオプションには次のものがあります。 必要に応じて使用してください。

key 説明 デフォルトの値
dao.package @Daoが注釈されたインタフェースの実装クラスが生成されるパッケージ。 何らかの値を指定した場合、dao.subpackageの指定よりも優先される。 @Daoが注釈されたインタフェースと同じパッケージ
dao.subpackage @Daoが注釈されたインタフェースの実装クラスが生成されるサブパッケージ。 dao.packageに値を指定していない場合にのみ有効。 @Daoが注釈されたインタフェースのパッケージが「example.dao」で、ここに指定した値が「impl」の場合、 生成されるクラスのパッケージは「example.dao.impl」となる。
dao.suffix @Daoが注釈されたインタフェースの実装クラスの名前のサフィックス。 @Daoが注釈されたインタフェースの単純名が「EmployeeDao」で、ここに指定した値が「Bean」の場合、 生成されるクラスの単純名は「EmployeeDaoBean」となる。 Impl
debug 注釈処理のデバッグ情報をログ出力するかどうか。「true」の場合、ログ出力を行う。 false
domain.converters 任意の型と基本型を相互変換するDomainConverterのプロバイダとなるクラスの完全修飾名のカンマ区切り。 クラスはorg.seasar.doma.DomainConverters によって注釈されていないければいけない。
entity.field.prefix @Entityが注釈されたクラスごとに生成されるタイプクラスで使用される。 タイプクラスのpublicなフィールド名のプレフィックス。 「none」を指定すると、プレフィックスを使用しないという意味になる。 $
expr.functions 式コメントで利用可能な関数群を表すクラスの完全修飾名。 org.seasar.doma.expr.ExpressionFunctionsのサブタイプでなければいけない。 org.seasar.doma.expr.ExpressionFunctions
sql.validation SQLファイルの存在チェックとSQLコメントの文法チェックを行う場合は、true。行わない場合は、false。 true
version.validation 注釈処理によるソースコード生成で利用したDomaのバージョンと実行時のDomaのバージョンが同じであることをチェックする場合は、true。しない場合は、false。 Domaのあるバージョンで生成されたコードを含むライブラリを作成する場合にfalseを指定してビルドすると、そのライブラリの再利用性が高まります。 ライブラリが依存するDomaのバージョンとは異なるバージョンのDomaで実行できるからです(Domaのバージョンに互換性がある限りにおいて)。 true

Ecipseでは、プロジェクトのプロパティの「Annotation Processing」の項目でオプションを登録します。

Eclipseでのオプション指定

-Aオプションにより登録します。詳細はjavacのドキュメントを参照してください。

javacタスクのcompilerargタグのlineパラメータを使用します。

]]>

maven-compiler-pluginのcompilerArgumentタグを使用します。

maven-compiler-plugin 1.6 1.6 UTF-8 -Adao.subpackage=impl ]]>

指定したいオプションが1つの場合は問題ありませんが、複数のオプションはMavenの制限により指定できません。 複数のオプションを使いたい場合は、maven-processor-pluginの利用を検討してください。 maven-processor-pluginとmaven-compiler-pluginの併用方法については、アプリケーションのビルド方法を参照してください。

compileJava.options.compilerArgsに指定します。 以下の例では、'-Adao.subpackage=impl' と '-Adao.suffix=Impl' が注釈処理のオプション指定です。