Doma 1.0.0-RC2-20100120.143619-2をリリース、DTOが使えるようになりました。

前回のSNAPSHOTからの変更点は次のものです。

  • [DOMA-125] - [Core] SQLファイルを使用したクエリでDaoのパラメータにDTOを渡せるようにしました。

よかったら使ってください(特にid:duranさん)。

jarを差し替えるときは注意してください。

説明

DaoのメソッドでDTO(普通のJavaBeans)が使えます。

@Select
List<Employee> select(EmployeeDto dto);

@Update(sqlFile = true)
int update(EmployeeDto dto);

@BatchUpdate(sqlFile = true)
int[] update(List<EmployeeDto> dto);

実は、DTOだけでなくいろんな型を指定できるようになったのですが、自由度が高すぎて危険ということはないと判断しました。aptによるSQLファイルのチェックでまちがった使い方はだいたい検出できるからです。たとえば、上のselectメソッドに対応するSQLが次のような場合、aptでエラー扱いになります。

select * from Employee where name = /* dto */'hoge'

エラーメッセージはこういったものです(若干省略してます)。

...
バインド変数[dto]に対応するパラメータの型は基本型もしくはドメインクラスでなければいけませんが[example.EmployeeDto]です。
型を間違えていませんか?もしくはフィールドアクセスやメソッド呼び出しの記述を忘れていませんか?

こう書くのが正しいです。

select * from Employee where name = /* dto.name */'hoge'

これで、既存のコードの利用や他フレームワークとの連携がしやすくなりました。