我有組件需要更新客戶和客戶地址(通過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