トランザクションスクリプトとドメインモデルと。

この区別は、呼び出し側からどう呼ぶかの区別じゃないかという結論。言い換えれば、どのようにカプセル化するかの違い。

まず1つのアーキテクチャパターンはTransaction Scriptパターンです。一言でいうと「ドメインロジックを機能別に分け1つのプロシージャとして実装」といった感じです。
OTN Japan - 今だからデータ・アクセスを真剣に考える! 第1回

サービス志向的という点のほうが大事っぽい。
Transaction Scriptって何よ - BitArts

そう思う。この間書いたソースでも、"Service"クラスとして定義したくらいだし。

public void useTransactionScript() {
    transactionscript.Service service = new transactionscript.Service(
        new transactionscript.Finder(DB.connect()));
    System.out.println(service.cuillenMonths("hatena"));
}

他方、ドメインモデルの場合は、利用者はオブジェクトを取出し、オブジェクトに対して必要なメッセージを送って処理を促す。

public void useDomainLogic() {
    domainlogic.Mappers mappers = new domainlogic.Mappers(DB.connect());
    System.out.println(
        mappers.customerMapper.find("hatena")
            .cuillenMonths());
}

WEBアプリケーションの場合

サーブレットアクションはトランザクションスクリプトだし、RESTはあまり理解してないけどドメインモデルに比較的近い気がする。

例えば↓みたいなリクエストを送れるとしたら、ドメインモデルなWEBアプリケーションっぽい。かも。

http://example.com/customerMapper/find("hatena")/cuillenMonths/
<return>
 <meta>
  <address>/customerMapper/find("hatena")/cuillenMonths/</address>
 </meta>
 <value class="Set<Month>">
  <month>
   <y>2008</y>
   <m>3</m>
  </month>
  <month>
   <y>2008</y>
   <m>5</m>
  </month>
 <value>
</return>

プロパティとメソッドの区別を明確にする必要はありそう。