DAOの作成の簡略化
S2Daoでは非常に簡単にDAOを作成することができますが、Genericsでさらに簡略化を図ってみました。
public abstract class Entity implements Serializable { // annotation for S2Dao public static final String id_ID = "identity"; private Long id; public Long getId() { return this.id; } public void setId(Long id) { this.id = id; } }
まず上のようにEntityクラスを用意し、全てのエンティティの基底クラスとします。全テーブルがIDというartificial keyを持つことを前提にしています。
次に、DAOの基底インターフェイスを作成します。
public interface Dao<T extends Entity> { public void insert(T item); public void update(T item); public void delete(T item); public void updateList(List<T> items); public void deleteList(List<T> items); public static final String get_ARGS = "id"; public T get(Long id); public List<T> getAll(); }
最後に、各エンティティに対応したDAOを作成します。Employeeというエンティティであれば
public interface EmployeeDao extends Dao<Employee> { public static final Class BEAN = Employee.class; }
と定義するだけで、挿入、更新、IDによる取得といった基本操作がサポートされることになります。
この方法が望ましいものかどうか、自信はありません…。