注意:抱歉我的英语不好,我是法国人,但我会尽量保持清醒。
我正在使用Symfony2进入Doctrine2。只是制作一个小游戏,以便学习新东西并测试这些新的很棒的工具。这是我的交易:我想将我的游戏配置存储到数据库中(如项目,种族信息等),以便从实体的方便语法中受益:
$user->getRace()->getName();
重点是“种族”或“项目”信息不太可能改变。我发现@ReadOnly实体注释告诉Doctrine在第一次插入后不检查这些实体中的更新。 我想知道你是否知道一种'透明'的方式(我的意思是说它适用于我)缓存这些结果以防止每次检索用户信息时无用的连接。
答案 0 :(得分:4)
@ReadOnly 注释所做的只是它告诉Doctrine不要在flush上更新实体。事件,如果它被更改它没有更新。
所以它与查询没什么关系。
如果要缓存Race或Item对象,则应使用result cache。它使您可以缓存任何查询的结果。
为了更容易使用(和可重用),您可以实现自定义注释,这将使引用实体的查询自动使用结果缓存。