アーキテクチャメモ 私は今はこんな感じかなぁ。 (^o^)
これでサイト再構築するかな。
Seasar + S2Dao + S2Struts + Mayaa + S2Dao + AjaxTags + js(prototype-1.4.0.js + scriptaculous.js)
サンプルコードもできたら公開します。
Dxoってのがなんなのか実はわかってないので使い方違うかも??
Action → ActionForm.getParam() → Service → Logic → Dao → DtoDao → Logic → ・・・ Action ← Dxo(ActionForm←Dto) ← Service ← LogicDxo(Dto←Entity) ← Logic ← (Entity) ← Dao (主に更新系) Dto ← Logic ← (Dto) ← DtoDao (主に検索系) <命名規則> Action -> 画面名Action.execute() Dxo -> 画面名Dxo.execute() Service -> 業務名Service.画面名[XXXX]execute(); (その業務・Action(画面)に対するやって欲しいこと) Logic -> XxxService.yyy(); (xxxをyyyする単位で作成) LogicDxo -> LogicDxo.EntityToDto(); (いらないかもな。) Dao -> テーブル名Dao.getYyy (Logicのyyyを使用:主に更新用に1テーブルに対してPKを取得する検索) DtoDao -> Dto名Dao.getYyy (Logicのyyyを使用:主に検索系) ※ Serviceは共有しない。 Logicは共有。 <役割> Action →画面からの値の取得と値のチェック。 サービス呼び出しを行い結果をDxoに渡す。 画面遷移先コントロール Dxo →サービスから来た結果を画面表示用のformに詰め詰めする。 Service →呼び出し元のアクションに依存した業務ロジックのコントロール。ロジッククラスを条件によって呼ぶ。 Logic →xxxをyyyするのyyyするだけの業務ロジック共有コンポーネント LogicDxo →EntityからDtoに変換かける。 いる?? Dao →指定されたパラメータでただ単純に検索するなど主に更新系になる。 パラメータにDtoは使わない。 DtoDao →joinなどがある検索に使用。 更新はしない。 パラメータにDtoは使わない。 Action.execute(ActionForm frm) { XXXDto dto = service.execute(frm.getParam()); XXXDxo.DtoToForm(dto, frm); return frm; } Dxo.DtoToForm(XXXDto dto, ActionForm frm) { frm.setXXXX(dto.getXXXX()); if (dto.getYYYY().equals("a")) { frm.setYYfg("1"); } else { frm.setYYfg("2"); } } Service.execute(String param, String param2) { if (param.equals("yyy")) { dto = logicYyy.execute(param2); } else { dto = logicZzz.execute(param2); } return dto; } Logic.execute(String param) { Entity entity = Dao.getYYYY(param); entity.setGGGG("aaa"); Dao.update(entity); Dto dto = null; if (param.equals("aaa")) { dto = DtoDao.getJJJJ(param); } else { Entity jEntity = Dao.getJJJJ(param); dto = LogicDxo.EntityToDto(jEntity); // これいらないかも? } return dto; } Dao(S2Dao) public String getEmployee_ARGS = "empno"; public Employee getEmployee(Integer empno); DtoDao(S2Dao) public String searchEmployeeDtoList_ARGS = "empno"; public EmployeeDto[] searchEmployeeDtoList(Integer dto); DtoDao_searchEmployeeDtoList.sql