References fetching: eager vs. lazy
Precisiamo una volta per tutte cosa è il fetching dei riferimenti e gli effetti che produce...
Quando un BusinessObject fa riferimento ad un altro ed entrambi sono stati definiti come classi mappate da Hibernate allora abbiamo stabilito una mapping reference e quindi risulta possibile reperire gli oggetti associati attraverso l'apposita proprietà.
Sulla proprietà è possibile definire la modalità di fetching da seguire per reperire il o i riferimenti collegati:
Rimando al sesto capitolo della documentazione di Hibernate per maggiori informazioni.
Siccome non lo cito mai, il tenero pedi i castagnaru ha approfondito il discorso insieme a me...
Quando un BusinessObject fa riferimento ad un altro ed entrambi sono stati definiti come classi mappate da Hibernate allora abbiamo stabilito una mapping reference e quindi risulta possibile reperire gli oggetti associati attraverso l'apposita proprietà.
Sulla proprietà è possibile definire la modalità di fetching da seguire per reperire il o i riferimenti collegati:
- se definiamo la proprietà lazy Hibernate non recupera subito i dati dalla tabella associata, ma aspetta che venga fatta una richiesta esplicita, evitando di leggere dati non necessari.
- se definiamo la proprietà eager, o non lazy, Hibernate recupera i dati dalla tabella associata facendo una outer join ed evitando di eseguire una seconda query.
Per default i riferimenti sono definiti come eager, quindi lazy="false", per evitare le eccezioni di tipo LazyInitializationException.Visto il comportamento predefinito di Hibernate occorre esplicitare i riferimenti lazy altrimenti rischiate di andare a leggere ogni volta tutta la base dati... (momento di riflessione)
Rimando al sesto capitolo della documentazione di Hibernate per maggiori informazioni.
Siccome non lo cito mai, il tenero pedi i castagnaru ha approfondito il discorso insieme a me...
1 Comments:
Ottimo chiarimento su questa caratteristica di hibernate. Grazie.
By Anonimo, at 11:47 PM
Posta un commento
<< Home