struts控制器和服务层?

时间:2012-03-07 17:03:09

标签: java struts

我正在处理的现有应用程序,Action类将直接与DAO类进行交互。

Action类会不会更好地调用服务层类(BusinessFacade)来调用DAO?

在Action类和DAO层之间开发一个层是否更好?

2 个答案:

答案 0 :(得分:2)

这样做更好,因为通过这种方式,您可以将业务逻辑(与导航无关的逻辑)分开,以实现可能的重用。

如果你分开,你甚至可以在非网络应用程序中重用业务逻辑。

数据访问层旨在将对象保存到抽象存储并从中恢复,实际上,特别是在RDBMS持久性的情况下,ORM可以很好地实现,因此通常可以看到业务逻辑使用ORM来持久化对象的图层。我更喜欢将业务逻辑与ORM合并,在这种情况下,而不是前端框架。

答案 1 :(得分: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. 记录已访问管理员的信息。
  3. 这些活动在控制器中没有位置,并为DAO添加了不必要的复杂性。

相关问题