可以说,当你到了把一刀插入另一刀的时候,你已经越过了DAO的范围,达到了业务层的问题吗?
注意:--我没有想到一个特定的问题,而是试图提取关于DAOs使用的一般经验规则。
发布于 2012-01-26 10:05:46
是。道斯不应该互相依赖。
协调不同DAO是业务/服务层的工作。
然而,如果你能描述你的具体情况,我们就能给出一个更准确的答案。
编辑:
在阅读了@edutesoy的答案之后,我看到了他的论点的逻辑。
因此,我将通过这样的回答来完善我的答案--这样做本身并不是错误的,但它有点“臭味”。
这是因为DAO层的正常结构--对于每种类型的实体(CustomerDAO、OrdersDAO等),通常都有一个DAO。如果您的CustomerDAO正在使用您的PaymentsDAO,它闻起来有点违反SRP:CustomerDAO是否也负责与支付相关的操作?
因此,总之-在将它引入我的代码之前,我肯定需要一个非常好的理由。
发布于 2012-01-26 10:06:18
道与商的划分是“武断的”。当类用于“从存储存储库检索和存储数据”时,我们说类是DAO。在另一个DAO中插入DAO并不妨碍它“从存储库中检索和存储数据”,因此对我来说,您的问题的答案是否定的。
没有人说你不能把一个DAO注入另一个(即使它通常不是这样做)。
发布于 2012-01-26 10:23:57
希望你应该从思考什么是刀开始。
如果使用JPA,则实体管理器已经是泛型DAO (by DAO模式)。大多数Java开发人员所称的DAO不是DAO模式中的DAO。这是一种重构:将与数据库相关的语句移出到一个外部类(我认为这就是您正在谈论的那种DAO )--不要误解我,我认为这是有用的。
所以我对这个刀的理解是一些重构的事情。重构的总体目标是提高代码的可读性和可维护性。因此,如果您的代码随着这个间接方向变得更好,那么继续,但是您应该记录一下您的项目DAO -模式与其他Java开发人员使用的DAO模式略有不同。
https://stackoverflow.com/questions/9016428
复制相似问题