DTOの自動生成をサポート
どういうことかというと、次のようなDomaの@Entityがついたクラスをコンパイルすると、
@Entity public interface Emp { @Id Identity id(); Name name(); Salary salary(); }
つぎのようなDTOを即座に自動生成するということです。
public class EmpDto implements java.io.Serializable { private static final long serialVersionUID = 1L; private java.lang.Integer id; private java.lang.String name; private java.lang.Long salary; // getter、setter 省略 }
CopyUtilなるユーティリティクラスを用意しているのですが、こいつでエンティティとDTOを相互変換できます。
Emp src = new Emp_(); // エンティティ src.id().set(1); src.name().set("aaa"); src.salary().set(100L); EmpDto dest = new EmpDto(); // DTO CopyUtil.copy(src, dest); assertEquals(new Integer(1), dest.getId()); assertEquals("aaa", dest.getName()); assertEquals(new Long(100), dest.getSalary());
Domaでは、Javaの型の力を有効利用するためにあえてPOJOを捨てているのですが、この機能を使うことで簡単にPOJOなインスタンスに詰め替えられます。
この機能を使って、GWTと組み合わせたデモをつくるつもり。
GWTでは、クライアントサイドで扱えるクラスに制限があるため、Domaのエンティティはそのままもっていけないんですよね。でもDTOに変換すれば大丈夫。