Doma 1.20.0 の機能改善について

今回のリリースは、バグ修正は1つもなく、すべて機能改善です。簡単に内容を紹介します。いずれも使い勝手が向上する修正になっていると思います。

aptで生成するメタクラスのコードの改善

エンティティのプロパティごとに2つの内部クラスを生成するコードになっていたのですが、コンパイルに時間がかかったりjarサイズが増大するといった問題点を指摘していただいたため(Domaのドメインクラスが嬉しかった話と欠点の話)、コードを改めました。具体的には、必要最低限リフレクションを活用するようにして、プロパティに対して内部クラスを生成するのをやめました。

この結果、問題点は解決されました。

エンティティのプロパティのフィールドにprivate指定可能に

これまで、非privateしか認めていなかったのですが、privateにできるようになりました。上述のメタクラスのコードの改善で、Fieldのアクセスにリフレクションを使うようにしたため、その副産物のようなものです。

こう書けるようになりました。

@Entity(naming = NamingType.SNAKE_UPPER_CASE)
public class Employee {
    @Id
    private Integer employeeId;
    private Integer employeeNo;
    ...
}

@AnnotateWithを柔軟に利用可能に

主にEJB 3.1で使いやすくするためのものです。
http://d.hatena.ne.jp/taedium/20111113/p1