Webアプリケーションは,レイヤーによって論理的に分割され,各レイヤーでは様々なフレームワークを使用して効率的に開発を行います。例えば,図1のようにプレゼンテーション・レイヤーにはStruts,データアクセス・レイヤーにはHibernateを使うといった具合です。各レイヤーに適用するためのフレームワークは様々な種類があるため,作成するアプリケーションの要件に合わせて選びます。 このように各レイヤーごとに,フレームワークを適用して開発する方式はかなり一般的になりましたが,実際にプログラムを作っていく上で,いくつかの問題が出てきました。 変更に弱い 図1を見ると,各レイヤーは一見独立しているように見えるのですが,実際のところ,隣り合うレイヤーは密接に連結しています。例えば,ビジネス・レイヤーからデータアクセス・レイヤーのオブジェクトにアクセスする場合,通常は以下のようなプログラムになるでしょう