[英]DESIGN of layered architecture for a java application
我有以下架构的代码
1)Business objects (Represents business object (BO) )
2)DataBasedModel classes (Maps to DB tables)
分层架构
1)DAO (reads /write BO to DB, convers BO to DBModels and vice versa)
2)Each table has a DAO
3)I plan to have a manager layer on top of DAO.Manager will call DAOS.Manager handels business logic.And transactions
考虑我有3个表A,B,C
1)BOs : are A_BO ,B_BO ,C_BO
2)Managers :A_M,B_M,C_M
3)DAOs :A_DAO,B_DAO,C_DAO
All write operations of BO are handles by respective Manager.
EG : Two write into A_BO manager A is always called.
现在,对于某些操作,我需要访问多个表/ BO。
For example to insert a record in A i need to check something in table B. <br>
Write of A is handled by A managed.
现在的问题是,经理可以打电话给B_DAO吗? 还是只应调用B_MAnager? 不能访问B_DAO?
我对应该采取哪种方法感到困惑? 一些问题:如果经理打电话给其他经理,则我不能在经理上放置@Transaction Annotation,并且我需要在Manager之上再加上一层
我看不到您的DAO层和管理者层的区别。 他们似乎负有相同的责任:管理实体。
另一方面,我想念诸如业务层之类的东西。 在业务逻辑内部,您将拥有需要访问多个实体的用例。 例如,要存储新的帐单,您将具有帐单数据,客户帐户,也许还有仓库库存以及许多其他实体的更新。 所有这些更新应在一个事务中进行。 因此,您应该将当前DAO和管理器层中定义的所有功能视为一个持久层,该功能只能在事务内部使用。 在每个实体上只有一个DAO是一种常见的模式。
事务应该由某个业务层触发,其中所提供的功能可以根据您的应用程序逻辑做一些有用的事情。 这也是可以实现事务划分和其他方面(如权限检查)的地方。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.