2013-10-29 5 views

risposta

5

direi di sì, se l'entità ha un campo pigramente inizializzato per esempio alcuni grandi dati BLOB o CLOB o un'associazione one-to-one pigra. Vedi 20.1.8. nella documentazione per la prima e 20.1.3 per quest'ultima.

Vedere anche:

20.1.4. Inizializzazione di raccolte e proxy

1

Sono d'accordo con Alan Hay, ecco la mia esperienza, ho riscontrato questo problema durante l'esecuzione dei test JUNit, alcuni degli oggetti pigri non venivano caricati durante il tentativo di caricare gli oggetti in un'altra sessione. Ho dovuto chiamare Hibernate.initialize (Object) per caricare gli oggetti pigri nella memoria.

0

Hibernate in alcuni casi restituisce oggetto proxy come lazy collection o Session.load() ecc. Quindi se si dispone di oggetto proxy e si desidera che quello reale sia possibile inizializzarlo manualmente.

0

In breve Hibernate.initialize() crea un'altra query per recuperare l'oggetto nel contesto di persistenza. Quando l'oggetto viene caricato con entusiasmo, JPA effettua una sola query per recuperare l'oggetto. Quindi, un'altra differenza è il numero di chiamate al server

Inoltre: 1. Se oggetto è nullo Hibernate.initialize() genera un'eccezione 2. Buona fonte per come inizializzare associazioni pigre http://www.thoughts-on-java.org/5-ways-to-initialize-lazy-relations-and-when-to-use-them/