我有组件需要更新客户和客户地址(通过JDBC)的数据库。从CustomerDAO调用CustomerAddressDAO是否合适?或者创建一个单独的“CustomerDataManager”组件来分别调用它们?DAO可以调用DAO吗?
回答
您可以做到这一点,但是,这并不意味着你应该。在这些情况下,我喜欢使用具有使用两个DAO的方法调用的服务(在这种情况下为CustomerService
)。您可以定义围绕服务方法的事务,因此如果一次调用失败,它们都会回滚。
调用其他DAO的DAO的问题是您将很快结束循环引用。依赖注入变得更加困难。
你可以调用一个DAO从另一个还要考虑在CustomerDAO建设CustomerAddressDAO(毕竟,它是关于客户,但我不认为你想有没有客户的客户地址)。
很明显,你可以用不同的方式做到这一点。但是,要正确回答这个问题,你应该从你的模型开始。在模型中,看看地址是一个实体(有自己的id并且也是独立使用的东西),或者是一个值类型(在客户环境中只有有意义的东西),那么你将有两种情况:
地址是实体: 在这种情况下,地址都有自己的道和客户都有自己的道也不道应该进入另外一个如果有需要操作两个部分的逻辑,那么。必须位于您的应用程序逻辑中,而不是数据访问层
地址是与客户关联的值类型: 在这种情况下,地址没有单独的数据访问层如果。它将作为包含Customer对象的一部分进行保存/恢复。
结论:如果设计合理,DAO不会相互访问(在标准情况下)。
“如果有一些逻辑需要操纵两者,那么必须在您的应用程序逻辑中,而不是在数据访问层中。” - 如果它需要交易? (例如,我需要确保客户和地址都被删除) – HEATH3N
这是一个非常好的问题!我认为,在这种情况下,将地址作为与客户关联的值类型是有意义的。这允许与客户一起处理地址,例如,删除这两个。 –
- 1. 可以重用JDBI DAO实例吗?
- 2. 在另一个DAO中使用DAO调用 - DAO依赖关系
- 3. 从另一个DAO调用一个DAO?
- 4. 这个DAO方法可以简化吗?
- 5. 单身DAO对象可以吗?
- 6. Spring JDBCTemplate:可以在RowMapper中调用DAO方法吗?
- 7. DAO类实例vs DAO EJB
- 8. Java:我们可以使用DAO作为单例实例吗?
- 9. MongoDB的吗啡DAO qwery
- 10. DAO类应该依赖于其他的dao类吗?
- 11. 可以DAO的保持状态信息
- 12. DAO可以访问当前Sql Server版本中的模式吗?
- 13. MVC中的单个DAO或多个DAO?
- 14. 一个表DAO vs多表DAO
- 15. 休眠DAO工厂不能实例DAO
- 16. 用Hibernate实现DAO?
- 17. 使用DAO模式
- 18. Spring DAO的用例
- 19. 使用DAO休眠
- 20. 通用休眠DAO
- 21. Spring通用Hibernate DAO
- 22. Hibernate DAO/SessionFactory使用
- 23. 在REST调用中访问DAO TOMCAT
- 24. 混合DAO和服务调用
- 25. Junit测试调用Dao类的Business类
- 26. DAO调用的空指针异常
- 27. 注解用SpringMVC用于DAO接口和DAO实现
- 28. DAO和连接
- 29. XML DAO示例
- 30. DAO,Spring,Hibernate,Jboss
什么阻止您在业务层中执行此操作? – Andre