2012-03-07 65 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增加了不必要的复杂度。