2011年10月19日水曜日

[Servlet][JSP][DAO][Seasar2]DAOクラスについて

サーブレットやフレームワークを使った開発でDAOパターンを採用する場合、DAOは必ずインターフェースとする。
これはモックへの差し替えを行うためである。
DIと組み合わせることによって、設定ファイルのみでモックによるテストを行ったり、本物の実装を動かせるようにする。

<<interface>>XxxDao


XxxDaoImpl

(↑)実装は上記のようなクラス構成となる。
モックを使う場合は、XxxDaoImplクラスのモックを別パッケージに用意し、DI設定を変える。
例えばSeasar2で、通常のDAO設定が次のようなものだとする。

  <component class="org.seasar.framework.container.autoregister.FileSystemComponentAutoRegister">
    <initMethod name="addClassPattern">
      <arg>"jp.co.sample.dao"</arg>
      <arg>".*DaoImpl"</arg>
    </initMethod>
  </component>

モックの場合は、次のように設定が変わる。(パッケージが"jp.co.sample.dao"から"jp.co.sample.dao.mock"になっている)

  <component class="org.seasar.framework.container.autoregister.FileSystemComponentAutoRegister">
    <initMethod name="addClassPattern">
      <arg>"jp.co.sample.dao.mock"</arg>
      <arg>".*DaoImpl"</arg>
    </initMethod>
  </component>

ドメイン駆動などにおけるサービスも同様で、サービスは必ずインターフェースとする。

0 件のコメント:

コメントを投稿