可以在DAO中创建对象吗?


Is it ok to create object in DAO

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

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

它结合了对象工厂和DAO。我认为将对象工厂和dao分开(可能还会包装到facade中)是不必要的开销,但我想听听其他人的意见,如果这不是一个糟糕的做法。

关于DAO模式的文章,我没有发现任何正面或负面的线索。

感谢您的意见/回答

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

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

我的意见是,在您的DAO的单独层中创建令牌。