我正在使用的現有應用程序中,Action類將直接與DAO類交互。struts控制器和服務層?
Action類會更好嗎,會調用服務層類(BusinessFacade)來調用DAO?
在Action類和DAO層之間開發一個層是否更好?
我正在使用的現有應用程序中,Action類將直接與DAO類交互。struts控制器和服務層?
Action類會更好嗎,會調用服務層類(BusinessFacade)來調用DAO?
在Action類和DAO層之間開發一個層是否更好?
這樣做更好,因爲通過這種方式,您可以將業務邏輯(與naviagtion無關的邏輯)分開以供重複使用。
如果分開,即使在非web應用程序中,您也可以重用業務邏輯。
數據訪問層的目標是將對象持久存儲到抽象存儲並從中恢復的層,實際上,特別是在RDBMS持久性的情況下,ORM可以很好地實現數據訪問層,因此經常可以看到業務具有ORM的邏輯層用於保存對象。我更喜歡將業務邏輯與ORM合併,而不是使用前端框架。
控制器和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");
}
}
這是做相關的業務邏輯,兩件事情:
這些活動在控制器中沒有位置,給DAO增加了不必要的複雜度。