gpt4 book ai didi

java - 为什么不让 Domains 直接扩展 GenericDAO?

转载 作者:行者123 更新时间:2023-12-01 11:54:33 25 4
gpt4 key购买 nike

我的问题可能有点基本,但想通过 Stack Overflow 人员来解决这个问题。

通常的做法是拥有域类(具有属性和 getter/setter,例如 User.java)。然后使用 DAO(即扩展 GenericDAO.java 的 UserDAO.java)来提供 CRUD 操作。

如果我们让域扩展 GenericDAO 会怎样?就像 User.java 扩展了 GenericDAO 一样,它允许我们拥有这样的东西:

user.save();

我曾研究过 Grails,如果您了解 Grails,您就会明白为什么会出现这个问题。也有一些关于领域驱动设计的想法,我想这暗示了类似的东西。我发现an article on DDD其中说:

The clients should always call the domain objects which in turn should call the DAO's for persisting the data to the data store.

只是想知道是否有任何缺点,为什么人们不这样使用它?

最佳答案

What if we make domains extend the GenericDAO? Like User.java extends GenericDAO, which allows us to have something like this:

您如何知道该域模型的使用者将需要该方法 (save()) ?例如,User 可以在 Web 服务中使用,该 Web 服务使用 DAOUser 持久保存到数据库中。相同的 User 也会在响应对象中发送到 Web 服务客户端。为什么将持久层打包在 Web 服务客户端上有意义?它只会让 Web 客户端消费者感到困惑,因为 save() 在那里没有意义。

Just wanted to know if there are any disadvantages why people not use it this way?

从我的角度来看,这是关注点分离。 User 是一个模型。它的职责是代表用户的状态。 UserDAO 是持久层的一部分。它的职责是将模型持久保存到持久性存储(例如数据库)中。通过混合两者,您可以将功能紧密结合起来。

关于java - 为什么不让 Domains 直接扩展 GenericDAO?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28542983/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com