Architecture DAO层应该如何实现?一个表道还是多个表道?
我正在按照分层架构实现一个模块。它将有一个表示层、服务层、业务层和DAO层。 根据分层架构指南,通信流应该是自上而下的。类似地,依赖关系也应该是自上而下的,即表示层-使用->服务层-使用->业务层-使用->DAO层。i、 业务层不应该依赖于服务层,同样地 问题1: 每层的输入应该是什么?既然服务层是从表示层调用的,那么服务层应该接受UIBean作为输入吗?还是服务Bean作为输入? 业务层和DAO层也是如此 问题2: DAO层应该是每个表还是可以处理多个表(所有表都由单个模块拥有)?我的模块的数据存储在多个表中。由于所有这些表都由单个模块拥有,我认为有一个DAO层是有意义的,它从上层抽象出数据的多表存储。此外,如果需要插入DAO层的不同实现(数据库存储、SVN存储等),则插入单个实现(处理所有数据)是有意义的。此外,在获取数据方面,多表DAO的性能将是高效的(一个连接查询就足够了) 问题3: 如果考虑多表DAO设计,那么DAO层的输入将是业务bean。DAO层负责将业务bean转换为多个DB bean,每个DB bean表示一个表并处理持久性。 但这不符合分层体系结构的要求,在分层体系结构中,层应该是隔离的,任何层都不应该依赖于其上层。在这种情况下,DAO层的输入是业务bean(不是DB bean),从业务bean到DB bean的转换以及反之亦然是DAO层的责任,这意味着它知道如何将业务bean转换为DB bean,反之亦然 有人能澄清一下吗?实现这样一个模块的正确方法应该是什么?当前的实施是否符合指导方针? 一个恰当的解释会有很大帮助。谢谢 我目前的实现是Architecture DAO层应该如何实现?一个表道还是多个表道?,architecture,dao,dependency-management,design-principles,layered,Architecture,Dao,Dependency Management,Design Principles,Layered,我正在按照分层架构实现一个模块。它将有一个表示层、服务层、业务层和DAO层。 根据分层架构指南,通信流应该是自上而下的。类似地,依赖关系也应该是自上而下的,即表示层-使用->服务层-使用->业务层-使用->DAO层。i、 业务层不应该依赖于服务层,同样地 问题1: 每层的输入应该是什么?既然服务层是从表示层调用的,那么服务层应该接受UIBean作为输入吗?还是服务Bean作为输入? 业务层和DAO层也是如此 问题2: DAO层应该是每个表还是可以处理多个表(所有表都由单个模块拥有)?我的模块的数
- 表示层: 将UI bean转换为服务bean并将其传递给服务层
- 服务层: 将服务bean转换为业务bean并将其传递给业务层。还协调各种从属服务之间的调用。处理事务边界。将服务bean返回到表示层
- 业务层: 将业务bean传递到DAO层。将服务bean返回到服务层
- DAO层: 将业务bean转换为DB bean,反之亦然。将业务bean返回到业务层
所以,如果我插入一个雇员记录,服务层的输入应该是EmployeeServiceBean,对吗?另外,根据您的评论,我当前的实现是否正确?@Ni3取决于您的技术。我不确定传递bean在您的上下文中意味着什么,但如果它并不意味着传递对更高级内容的引用,那么它似乎是正确的。例如,如果社交网络增长,你的服务豆甚至需要在移动应用程序上运行(回到例子)。在流程中,您描述的示例中的逻辑顺序是正确的。如果我的答案解决了你的问题,那么你可以考虑接受它作为正确的答案。