可以在DAO中创建对象吗

Posted

技术标签:

【中文标题】可以在DAO中创建对象吗【英文标题】:Is it ok to create object in DAO 【发布时间】:2016-01-04 18:40:34 【问题描述】:

我有一个 DAO,例如,用于访问令牌数据库。 是否可以使用它来创建并立即持久化新实体,如下例所示? (php 示例)

class TokenDao 
    ...
    public function createToken($code) 
        $token = new Token($code);
        $this->entityManager->persist($token);
        $this->entityManager->flush();
        return $token;
    

它结合了一个对象工厂和 DAO。我认为制作单独的对象工厂和 dao(并且可能包装到外观中)是不必要的开销,但如果这不是一个坏习惯,我想听听其他人的意见。

我没有发现任何关于 DAO 模式的文章的正面或负面线索,无论这是否可以。

感谢您的意见/回答。

【问题讨论】:

【参考方案1】:

在我看来,DAO 应该只用于封装数据库,而不是执行某些逻辑或创建。

在您的示例中,另一个问题是如果您更改 Token 构造函数,您也必须更改 TokenDao。

我的意见是,在与您的 DAO 不同的层中创建令牌。

【讨论】:

以上是关于可以在DAO中创建对象吗的主要内容,如果未能解决你的问题,请参考以下文章

我可以在密码哈希函数中创建用户对象吗?

我可以在所述对象的构造函数中创建指向对象的指针吗?

可以在 XML 中创建固定宽度的可绘制对象吗?

我可以在其他类中创建 Activity 的对象吗?

我可以在同一个类中创建对象吗?

在 dao room 数据库中创建一个带有 body 的自定义函数