我使用Doctrine 2作爲我的ORM,事情進展順利,但我一直想知道EntityManager#persist()
方法。該"Persisting entities"文件說,下面即將persist()
呼籲對象X
:知道什麼時候調用persist
如果X是一個已經存在的管理實體,它是由持續經營忽略。
這使我相信persist()
只需要在對象是新的並且尚未保存到數據庫時調用。然而,對於"Deferred Explicit" change tracking policy的文件說:
...學說2只通過對EntityManager的呼叫#堅持(實體)認爲,已明確標記爲變化檢測實體...
...聽起來像persist()
必須在對象上調用它才能被更新。什麼時候應該叫persist()
?如果只使用新對象,無論何時更新實體,是否有重要的性能影響,並讓教條理清差異?
請注意,當使用延遲隱式更改跟蹤(默認值)時,Doctrine會將每個屬性的原始值與每個屬性的新值(對於UnitOfWork中的每個實體,與延遲顯式相同)進行比較,而不僅僅是你稱之爲'堅持()'的那個。 –
生活了一半,直到問題激起思想,默認政策是延期顯性政策。 –