我正在处理的现有应用程序,Action类将直接与DAO类进行交互。
Action类会不会更好地调用服务层类(BusinessFacade)来调用DAO?
在Action类和DAO层之间开发一个层是否更好?
答案 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");
}
}
这是与业务逻辑相关的两件事:
这些活动在控制器中没有位置,并为DAO添加了不必要的复杂性。