ひがやすを技術ブログ

電通国際情報サービスのプログラマ

1:Nの実装案(考慮中)

1:NはS2Daoとして実装し、必要のない人は使わなければ良いし、
必要のある人は使えば良いんだと考えることにしました。
ニーズがあることには対応します。
実装案は考慮中。



以下の例はDepartmentにemployeesというプロパティがある場合です。


public static final Object employees_DELEGATE =
DaoMetaDataFactory.getDaoMetaData(EmployeeDao.class);
public static final String employees_DELEGATE_INVOKE =
"getEmployeesByDeptno(deptno)";
private List employees;
public List getEmployees() {
return this.employees;
{
public void setEmployees(List employees) {
this.employees = employees;
}
Department#getEmployees()が呼び出しにAspectを仕掛けます。
このAspectS2JDBCが自動的に設定します。
Aspect適用後のgetEmployees()の実装イメージはこんな感じ。

List value = super.getEmployees();
if (value != null) {
return value;
}
value = employees_DELEGATE.getEmployeesByDeptno(deptno);
setEmployees(value);
return value;
DELEGATEアノテーションは、1:Nだけではなく、任意のプロパティに
設定できます。
プロパティ_DELEGATEには任意のオブジェクトを設定できます。
プロパティ_DELEGATE_INVOKEで対象となるDELEGATEの任意のメソッドを
指定した引数(プロパティ)で呼び出すことができます。