La domanda riguarda Doctirne, ma penso che possa essere estesa a molti ORM.Perché è necessario separare e unire le entità in un ORM?
Detach:
Un'entità si stacca da un EntityManager e quindi non più gestiti richiamando il metodo
EntityManager#detach($entity)
su di esso o cascata l'operazione di scollegamento ad esso. Le modifiche apportate all'entità distaccata , se presente (inclusa la rimozione dell'entità), non saranno sincronizzate nel database dopo che l'entità è stata scollegata.
unione:
entità Fondere riferisce alla fusione di (solitamente monofamiliare) entità nel contesto di un dell'EntityManager modo che diventino riusciti nuovamente. Per unire lo stato di un'entità in un EntityManager, utilizzare il metodo
EntityManager#merge($entity)
. Lo stato dell'entità passata verrà unito a una copia gestita di questa entità e questa copia sarà restituita successivamente.
Capisco (quasi) come funziona, ma la domanda è: perché è necessario separare/fondere le entitaie? Puoi darmi un esempio/scenario quando queste due operazioni possono essere utilizzate/necessarie?
Sono d'accordo con tutti detto tranne con quello che viene detto a livello. Il metodo flush sincronizza le entità con il database ma all'interno dei limiti della transazione. Questo viene a giocare su invocando una query all'interno della stessa transazione. In tal modo si garantisce che l'elaborazione della query tiene conto di questi stessi aggiornamenti delle transazioni. – Sam
Sei corretto @Sam, ho sbagliato con il metodo flush. – manix
Questa è una buona spiegazione (+1), ma perché si dovrebbe usare più di un gestore di entità in primo luogo? Non riesco a capirlo, mi dispiace, usando Doctrine sempre con un gestore di entità ... – gremo