setoya-blog

システム開発技術、データ分析関連でお勉強したことや、山奥生活を綴る、テンション低めなブログです。

最近、研修の一環でO/RマッピングツールのS2Daoを使ってDaoを作っている。

Hibernateの方がメジャーだけど、xmlファイルでマッピングを設定するのが大変でバージョン間の違いも大きいらしい。

S2DaoJavaのソースに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でメソッド名だけ定義しておけばS2DaoSQL文を自動生成して、
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で書き直したらコード量がぐっと減った。