ZF2 Doctrine:何时刷新ObjectManager

时间:2013-09-10 13:02:10

标签: doctrine-orm zend-framework2 flush

何时是刷新实体/对象管理器的最佳“时间”? 它应该在每次持续操作之后吗?或者它应该运行一次,例如执行postDispatch?

2 个答案:

答案 0 :(得分:3)

在每个持久化之后运行它实际上是一个反模式。理想情况下,您应该在请求结束时运行一次。

我不会把它放在postDispatch处理程序中,因为这意味着它将在每个请求之后运行,这将是代价高昂的性能,例如,列表页面,其中列出具有许多关系的实体,因为Doctrine将不得不检查许多实体的变化。

将其置于修改数据的操作的末尾。

答案 1 :(得分:0)

理想情况下,在请求结束时执行一次。但是,如果您使用的实体过多,则最好尽快刷新,并且不要让工作单元过载实体。这是事情变得很奇怪的时候,因为spl_object_hash的问题不能完全识别所有这些对象。

在完成某些实体的操作后,也将立即使用clear()。