Estoy usando Doctrine 2 como mi ORM, y las cosas van bien, pero me he estado preguntando sobre el método EntityManager#persist()
. La documentación "Persisting entities" dice lo siguiente acerca de una llamada a persist()
por objeto X
:saber cuándo llamar persistir
Si X es una entidad gestionada preexistente, es ignorado por la operación de persistir.
Eso me lleva a creer que persist()
solo necesita ser llamado cuando el objeto es nuevo y aún no se ha guardado en la base de datos. Sin embargo, la documentación de la "Deferred Explicit" change tracking policy dice:
... Doctrina 2 sólo se tiene en cuenta las entidades que se han marcado explícitamente para la detección de cambio a través de una llamada a EntityManager # persist (entidad) ...
... que suena como persist()
debe invocarse en el objeto para que se actualice en absoluto. ¿Cuándo se debe llamar al persist()
? Si solo se trata de objetos nuevos, ¿hay un impacto significativo en el rendimiento para llamarlo de todos modos cada vez que se actualiza una entidad y dejar que Doctrine clasifique la diferencia?
Tenga en cuenta que al usar el seguimiento de cambios implícitos diferidos (el valor predeterminado), Doctrine comparará el valor original con el nuevo valor de cada propiedad (hasta el momento diferido explícito) para cada entidad que esté en UnitOfWork, y no solo los que llamó 'persist()' encendidos. –
Viví la mitad de mi vida hasta que surgió el problema con el pensamiento de que la política predeterminada es Política explícita diferida. –