首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >一个DAO可以调用DAO吗?

一个DAO可以调用DAO吗?
EN

Stack Overflow用户
提问于 2012-01-24 22:12:20
回答 2查看 8.7K关注 0票数 17

我有一个组件,需要更新数据库的客户和客户地址(通过JDBC)。从CustomerDAO调用CustomerAddressDAO合适吗?或者创建一个单独调用它们的"CustomerDataManager“组件?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2012-01-24 22:20:56

你可以做到,但这并不意味着你应该这样做。在这些情况下,我喜欢使用具有同时使用两个DAO的方法调用的服务(在本例中为CustomerService)。您可以围绕服务方法定义事务,因此如果一个调用失败,它们都会回滚。

调用其他DAO的DAO的问题是,您很快就会得到循环引用。依赖注入变得更加困难。

票数 30
EN

Stack Overflow用户

发布于 2012-11-28 05:03:31

显然,你可以用不同的方式来做。但是,为了正确回答这个问题,您应该从您的模型开始。在模型中,查看Address是一个实体(具有自己的id并独立使用的实体),还是值类型(仅在客户上下文中有意义的内容)。然后,您将有两个案例:

  1. Address是一个实体:在这种情况下,Address有自己的Dao,Customer有自己的Dao。两个Dao都不应该访问另一个Dao。如果有一些逻辑需要处理这两者,那么它必须在您的应用程序逻辑中,而不是在数据访问层中。
  2. 地址是与Customer关联的值类型:在这种情况下,地址本身没有单独的DAO。它将作为包含的Customer对象的一部分进行保存/恢复。

结论:如果设计得当,DAO不会相互访问(在标准情况下)。

票数 5
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/8988252

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档