1. 概要
    1. 窓口となるSession Beanを配置することで、ビジネスオブジェクトの複雑さを隠蔽する役割を果たします。
  2. 問題
    1. デザインが不適切な多くJ2EEアプリケーションでは、 プレゼンテーション層のコンポーネントは、リモートコールによる ビジネスロジック層のコンポーネントとのやり取りを大量発生してしまい、その結果
    2. 性能ネック。大量のリモートコールがネットワーク上を通過するため、 大きなネットワークのトラフィックは性能ネックになります。
    3.  複雑化。一つの業務を遂行するのに、大量な呼び出しをしてしまい、 その結果システムが複雑になってしまいます。
    4. 重複コード。ビジネスロジック層のコンポーネントとのやり取りを各プレゼンテーションのコンポーネントに分散してしまうため、 コードの重複が発生します。
    5. トランザクション管理の分散。粗粒度の業務のワークフローは各プレゼンテーションのコンポーネントに記述しなければならないので、 トランザクション管理は分散してしまいます。
  3. 解決策
    1. 一連のワークフローでのビジネスコンポーネントとの複雑なやり取りを隠蔽するために、 窓口(facade)となるSession Beanを配置します。 また、ビジネスオブジェクトを管理し、クライアントに対して一貫した粗粒度のサービス単位を提供します。
  4. メリット
    1. 低結合度。クライアントとの依存関係を低くなり、低結合度を実現できます。
    2. 簡素化。クライアントに対して一貫した粗粒度のサービス単位を提供するため、容易に利用できるようになります。
    3.  性能向上。クライアントからのEJB呼び出し回数が減り、性能ネックとなるネットワークのトラフィックを減少することで、性能向上します。
    4. トランザクションの一元管理。粗粒度のSession Façadeにトランザクションを集中して管理できます。