2012-03-07 6 views
0

私が取り組んでいる既存のアプリケーションでは、ActionクラスはDAOクラスと直接対話します。支柱コントローラとサービス層?

サービスクラス(BusinessFacade)を呼び出すと、DAOを呼び出すことができますか?

ActionクラスとDAOレイヤーの間にレイヤーを開発する方がよいでしょうか?

答えて

2

このようにして、ビジネスロジック(ナビゲーション問題に関係しないロジック)を再利用できるように分離することができます。

あなたが分かれば、ビジネスロジックをWeb以外のアプリケーションでも再利用できるようになります。

データアクセス層は、オブジェクトが抽象的な記憶域に永続化され、元の記憶域から復元されたレイヤーを意図しています。実際には特にRDBMS永続化の場合は、ORMによってうまく実装できるため、オブジェクトを持続させるためのORMを持つ論理層。私はビジネスロジックをORM(この場合はフロントエンドフレームワークではなく)とマージすることをお勧めします。

0

コントローラレイヤとDAOレイヤの間のサービスレイヤの目的は、より複雑なビジネスロジックをカプセル化することです。これにより、コントローラはダムになり、DAOはバックエンドのデータリポジトリ(データベース、フラットファイルなど)とのやり取りに集中することができます。ユーザーは、必要な役割を持っていることを確認すること

  1. :このビジネス・ロジックに関連する2つのことをやっている

    @PreAuthorize("hasRole('ROLE_ADMIN')); 
    public Person getPerson(long personId) { 
        Person person = personDAO.getById(personId); 
        if (person.getPosition().equals("MANAGER") { 
         log.debug("Manager's information requested"); 
        } 
    } 
    

    :ここ

    は春のセキュリティアノテーションを使用して、サービス層方法の一例です関数を実行します。
  2. マネージャの情報にアクセスしたことを記録します。

これらのアクティビティはコントローラ内に配置されておらず、不要な複雑さをDAOに追加します。

関連する問題