Doctrine:实体存储库本地缓存

时间:2013-05-17 10:39:36

标签: doctrine-orm

我发现自己经常在我的存储库中做这样的事情:

protected $currencies;


public function findAll()
{
    if (!isset($this->currencies))
    {
        $this->currencies = parent::findAll();
    }

    return $this->currencies;
}

所有需要实体对象集合的服务 只需在存储库中调用findAll即可 无需多次启动数据库查询/水化过程。

是对还是我误用了存储库模式? 您在本地保存馆藏的方式是什么?

1 个答案:

答案 0 :(得分:0)

如果你必须这样做,你可能会滥用你的控制器/服务。是否有某些原因,如果仅在请求期间存在,则需要在内存中缓存结果?即一旦页面加载,所有这一切都消失了。

只有在页面内多次使用相同的findAll结果时才有意义。这就是您需要修复的内容。