ひがやすを技術ブログ

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

層をまたがるデータのやり取り

プレゼンテーション層と業務ロジック層のデータのやり取りは、EntityやDTOを使います。DTOを使うのは主に次のような場合です。

  1. 検索条件の入力データなど、永続化されないデータ。
  2. 関連のない複数のエンティティのやり取り。

1の場合、文字列、数値、日付など項目をばらして、引数でやり取りしてはいけません。検索条件が変わるたびにインターフェースが変わってしまうためです。
プレゼンテーション層のフレームワークは、EntityやDTOと直接バインディングできることが望ましいのですが、Strutsなどを使っているとそうはいきません。そのような場合は、ViewHelperパターンを使います。ActionFormにEntityやDTOをセットして、相互変換するロジックをActionFormに組み込むのです。プレゼンテーション層のデータ構造は、プレゼンテーション層だけが知っているようにしましょう。プレゼンテーション層の変更は、プレゼンテーション層で閉じていることが望ましいためです。
業務ロジック層とデータアクセス層とのやり取りも同様です。