【发布时间】:2011-08-31 20:24:51
【问题描述】:
我使用 Doctrine 2 作为我的 ORM,一切进展顺利,但我一直想知道 EntityManager#persist() 方法。 "Persisting entities" 文档说明了对 persist() 对象 X 的调用:
如果 X 是一个预先存在的托管实体,它会被持久化操作忽略。
这让我相信 persist() 只需要在对象是新对象且尚未保存到数据库时调用。但是,"Deferred Explicit" change tracking policy 的文档说:
... Doctrine 2 仅考虑通过调用 EntityManager#persist(entity) 明确标记为更改检测的实体...
... 听起来像persist() 必须在对象上调用才能完全更新。什么时候应该调用persist()?如果仅在新对象上,无论何时更新实体并让 Doctrine 解决差异时调用它是否会对性能产生重大影响?
【问题讨论】:
标签: php doctrine-orm