Tutto quello che ho potuto raccogliere da Google è che:Che cosa contiene l'oggetto proxy Hibernate?
Hibernate utilizza un oggetto proxy per implementare lazy loading. Quando chiediamo di caricare l'oggetto dal database e l'oggetto recuperato ha un riferimento a un altro oggetto concreto, Hibernate restituisce un proxy anziché l'oggetto associato concreto.
Hibernate crea un oggetto proxy utilizzando la strumentazione bytecode (fornita da javassist). Hibernate crea una sottoclasse della nostra classe di entità in fase di esecuzione utilizzando la libreria di generazione del codice e sostituisce l'oggetto reale con il proxy appena creato.
Quindi, che cosa contiene esattamente l'oggetto Proxy?
Contiene un oggetto di riferimento oggetto scheletro con solo il campo ID impostato? Gli altri campi verranno impostati quando chiamiamo il metodo get?
L'oggetto Proxy contiene l'istruzione JDBC per recuperare tutti i dati richiesti per riempire completamente l'oggetto di riferimento.
C'è qualcos'altro che potrebbe mancare?
Non sto chiedendo l'alimentazione del cucchiaio ma se è possibile fornire qualsiasi collegamento con informazioni che sarebbe bello.
Qualsiasi correzione alla descrizione sopra sarà anche benvenuta.
Esempio.
class Address {
String city;
String country;
}
class Person{
int id;
String name;
Address address;
}
Quando si prova a caricare l'oggetto Person, Hibernate sottoclasse classe Persona come:
class ProxyPerson extends Person {
int id;
String name;
Address proxyCGLIBObject;
}
e restituire un oggetto ProxyPerson. Oggetto di ProxyPerson avrà un valore per ID e nome ma proxy per Indirizzo.
Sono corretto?
Cosa posso aspettarmi dall'aggiunta di un metodo toString() sull'oggetto proxy?
Grazie Vlad, la mia domanda non è per la raccolta ma il riferimento ad altre classi. Si prega di vedere l'esempio aggiunto ora. – vineeshchauhan
Sì, le tue supposizioni sono corrette. –
Ancora non capisco. – Spider