ZF2 原则:何时刷新 ObjectManager



什么时候是刷新实体/对象管理器的最佳"时间"?应该在每次持久操作之后吗?还是应该在例如postDispatch上运行一次?

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

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

将其放在修改数据的操作的末尾。

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

也使用 clear(),一旦你完成了某些实体,并将从其他实体开始。

最新更新