我正在使用的现有应用程序中,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增加了不必要的复杂度。