2012-03-30 4 views
1

MVCアーキテクチャーでは、どのユーザー要求がどのコンポーネント(どのサーブレット、Java EEの場合)によって処理されるかを決定するものです。次に、モデルと呼ばれるビューに与えられるべきデータを作成するために使用されるサーブレット(ビジネスメソッドやEJBなどを呼び出す)内で使用されるロジックですか?サーブレット内で使用されるロジック、それ自身のモデル、またはそれらが処理してjspに渡すデータがモデルですか?

一部の書籍では、サーブレットがモデルをJSPに渡すと記述されています。この意味では、modelはJSPに渡されるデータです。典型的な「モデル」の正しい意味は何ですかJava EEアーキテクチャ

答えて

1

このモデルは、「ビジネスモデル」と「データモデル」の両方に関係します。ビジネスモデルは、「ビジネスデリゲート」、「ドメインオブジェクト」、「サービスファサード」などの意味でも知られています。標準に従ってうまく設計されたJava EE Webアプリケーションでは、ではなくではJPAまたはDBアクセスロジックが直接であるが、純粋なDAOオブジェクトである他のEJBクラスにさらに委譲するのはEJBクラスです。

など。

@Stateless 
public class ShoppingServiceLocal implements ShoppingService { 

    @EJB 
    private ProductDAO productDAO; 

    @EJB 
    private OrderDAO orderDAO; 

    @Override 
    public List<Product> searchProducts(String query) { 
     return productDAO.find(query); 
    } 

    @Override 
    public Order orderProduct(User user, Product product, int quantity) { 
     product.setAvailable(product.getAvailable() - quantity); 
     productDAO.update(product); 
     Order order = new Order(user.getId(), product.getId(), quantity); 
     orderDAO.create(order); 
     return order; 
    } 

} 

これはEJBであることから、ProductDAO#update()OrderDAO#create()は、単一のトランザクションで実行されている、ということに注意してください。したがって、注文を作成すると例外がスローされると、編集されたアベイラビリティは永続化されません。

「データモデル」JPA @Entity JavaBeansのことになっている上記の例では、ProductUser及びOrderあります。これはサーブレット(コントローラ)とJSP(ビュー)が知っているものです。

2

モデルは、サーバーの下のデータを構造化する方法です。したがって、モデルはJSPに渡されるデータではなく、jspに渡されたデータ構造です。

MVCパターンについて説明すると、この疑いが常に出てきます。一部の人々はDTO(データ転送オブジェクト)がモデルであり、JSPはビューであり、サーバー上で実行されるアクションはコントローラであると言いますが、Java EEアーキテクチャの場合には少なくとも別の説明を聞いています。今覚えてない。

しかし、私はこれまでに聞いたことの他のものよりもあなたの(そして私によって完成された)視点が好きです。

関連する問題