orm manytomany Qual è la differenza tra fetch="EAGER" e fetch="LAZY" nella dottrina




manytomany doctrine example (2)

Per spiegarlo semplicemente, quando si carica un'entità e se ha un'associazione con una o più entità, che cosa dovrebbe fare la dottrina?

Se l'associazione è contrassegnata come EAGER , recupererà e caricherà anche l'entità associata.

Se l'associazione è contrassegnata come LAZY , la doctrina creerà oggetti proxy (oggetti fittizi) al posto dell'entità effettiva. Solo quando effettui la prima chiamata a quell'entità associata (come $cart->getItems() ), doctrine recupera e carica gli oggetti dal database.

Fare riferimento a: https://www.doctrine-project.org/projects/doctrine-orm/en/2.6/reference/advanced-configuration.html#association-proxies

Qual è la differenza tra fetch="EAGER" e fetch="LAZY" nell'annotazione @ManyToOne in Doctrine?

/**
 * @ManyToOne(targetEntity="Cart", cascade={"all"}, fetch="EAGER")
 */

/**
 * @ManyToOne(targetEntity="Cart", cascade={"all"}, fetch="LAZY")
 */

Answer #1

Ulteriori informazioni sulla differenza tra loro:

(fetch = "EAGER")

le entità associate verranno recuperate non appena l'entità di destinazione della query originale viene caricata dalla dottrina. Ciò significa che non ci sono query SQL aggiuntive su DB.

(fetch = "LAZY")

le entità associate verranno recuperate SOLO SE l'entità di destinazione della query originale chiama il metodo di riferimento, come $cart->getItems() . Ciò significa che esiste additional query SQL additional su DB.







many-to-many