2012-03-07 66 views
0

我正在使用的現有應用程序中,Action類將直接與DAO類交互。struts控制器和服務層?

Action類會更好嗎,會調用服務層類(BusinessFacade)來調用DAO?

在Action類和DAO層之間開發一個層是否更好?

回答

2

這樣做更好,因爲通過這種方式,您可以將業務邏輯(與naviagtion無關的邏輯)分開以供重複使用。

如果分開,即使在非web應用程序中,您也可以重用業務邏輯。

數據訪問層的目標是將對象持久存儲到抽象存儲並從中恢復的層,實際上,特別是在RDBMS持久性的情況下,ORM可以很好地實現數據訪問層,因此經常可以看到業務具有ORM的邏輯層用於保存對象。我更喜歡將業務邏輯與ORM合併,而不是使用前端框架。

0

控制器和DAO層之間的服務層的目的是封裝更復雜的業務邏輯。這可以讓你的控制器變得笨拙,你的DAO專注於與後端數據倉庫(即數據庫,平面文件等)交互的任務。

這是一個使用Spring Security的註釋的服務層的方法的例子:

@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"); 
    } 
} 

這是做相關的業務邏輯,兩件事情:

  1. 確保用戶有必要的作用運行該功能。
  2. 記錄管理員信息已被訪問。

這些活動在控制器中沒有位置,給DAO增加了不必要的複雜度。