最近、研修の一環でO/RマッピングツールのS2Daoを使ってDaoを作っている。
Hibernateの方がメジャーだけど、xmlファイルでマッピングを設定するのが大変でバージョン間の違いも大きいらしい。
S2DaoはJavaのソースにO/Rマッピングのアノテーションを埋め込むようになっている。
下は、テーブルにマッピングされたJava Beansの例。
下の赤い行のようにTABLEアノテーションを使ってテーブルとマッピングする。
Java Beansのプロパティの名前にもよるけど、これだけでマッピングの設定は終わり。
もちろん、もっと細かい設定もすることは出来る。
import java.io.Serializable; public class Employee implements Serializable { public static final String TABLE = "EMP"; private long empno; private Short deptnum; public Employee() { } public Short getEmpno() { return empno; } public void setEmpno(Short empno) { this.empno = empno; } public Short getDeptnum() { return deptnum; } public void setDeptnum(Short deptnum) { this.deptnum = deptnum; } }
さらにすごいのは、プログラマーがDaoを実装しないでよいところ。
interfaceでメソッド名だけ定義しておけばS2DaoがSQL文を自動生成して、
daoを実装してくれる。
下は、プログラマーが実装すべきinterface。
package examples.dao; import java.util.List; public interface EmployeeDao { public Class BEAN = Employee.class; public List getAllEmployees(); public String getEmployee_ARGS = "empno"; public Employee getEmployee(int empno); public int getCount(); public String getEmployeeByJobDeptno_ARGS = "job, deptno"; public List getEmployeeByJobDeptno(String job, Integer deptno); public int update(Employee employee); }
6月の研修で作ったDaoもS2Daoで書き直したらコード量がぐっと減った。