Daoの作成単位

これもちょっと前にmixiで書いてみたネタ。一般的に、Daoは以下の単位で作成されるような気がします。

  1. テーブル単位
    1. Join等の複数テーブルが絡むSQL文はそれぞれ個別のDaoを作成してそこに定義。
    2. Join等の複数テーブルが絡むSQL文は主となるテーブルのSQL文に定義。
  2. いわゆる、サービスとかビジネスロジックとかの単位に定義。
  3. ハイブリッド
    1. サービス単位のDaoからテーブル単位のDaoを利用するとか


各所を見て回るに、2はあまり無さそうで、2ならばまだ3という感じだが、結局のところ1.1に落ち着くという意見が多かったような個人的な印象。



個人的には1.2がいいような気がするんですよね。1.1の方が設計的にだとか依存性的にだとか拡張性的にだとか保守性的にだとかの観点で考えると奇麗で自由度が高そうな気はするが、テーブルの組み合わせ毎にDaoを作るのもなんとなくたまったもんでは無いような気もするし、1.2の方がルール的には単純明快なような気がする。


実際のところどうなんでしょうかね。