我有需要为客户和客户地址更新数据库的组件(通过JDBC).从CustomerDAO调用CustomerAddressDAO是否合适?或者创建一个单独调用它们的"CustomerDataManager"组件?
hvg*_*des 27
你可以做到,但这并不意味着你应该这样做.在这些情况下,我喜欢使用CustomerService具有使用两个DAO的方法调用的服务(在这种情况下).您可以围绕服务方法定义事务,因此如果一个调用失败,它们都会回滚.
调用其他DAO的DAO的问题是你很快就会得到循环引用.依赖注入变得更加困难.
显然,你可以用不同的方式来做到这一点。但是,要正确回答这个问题,您应该从您的模型开始。在模型中,查看 Address 是实体(具有自己的 id 并独立使用的东西),还是值类型(仅在 Customer 的上下文中有意义的东西。然后,您将有两种情况:
地址是一个实体:在这种情况下,地址有自己的道,客户有自己的道。两个道都不应该访问另一个。如果有一些逻辑需要操作这两者,那么它必须在您的应用程序逻辑中,而不是在数据访问层中。
地址是与客户关联的值类型:在这种情况下,地址本身没有单独的 DAO。它作为包含 Customer 对象的一部分被保存/恢复。
结论:如果设计得当,DAO 不会相互访问(在标准情况下)。
| 归档时间: |
|
| 查看次数: |
6709 次 |
| 最近记录: |