Dal forum di Hibernate :
Questo dal libro Hibernate in Action. Bravo leggere questo ..
Recupero di oggetti in base all'identificatore Il seguente frammento di codice Hibernate recupera un oggetto Utente dal database:
User user = (User) session.get(User.class, userID);
Il metodo get () è speciale perché l'identificatore identifica in modo univoco una singola istanza di una classe. Quindi è comune per le applicazioni utilizzare l'identificatore come una comoda maniglia per un oggetto persistente. Il recupero per identificatore può utilizzare la cache durante il recupero di un oggetto, evitando un accesso al database se l'oggetto è già memorizzato nella cache. Hibernate fornisce anche un metodo load ():
User user = (User) session.load(User.class, userID);
Il metodo load () è più vecchio; get () è stato aggiunto all'API di Hibernate a causa della richiesta dell'utente. La differenza è banale:
Se load () non riesce a trovare l'oggetto nella cache o nel database, viene generata un'eccezione. Il metodo load () non restituisce mai null. Il metodo get () restituisce null se l'oggetto non può essere trovato.
Il metodo load () può restituire un proxy invece di una vera istanza persistente. Un proxy è un segnaposto che attiva il caricamento dell'oggetto reale quando vi si accede per la prima volta; D'altra parte, get () non restituisce mai un proxy. Scegliere tra get () e load () è facile: se sei certo che l'oggetto persistente esista e che la non esistenza sarebbe considerata eccezionale, load () è una buona opzione. Se non sei sicuro che esista un'istanza persistente con l'identificatore fornito, usa get () e verifica il valore restituito per vedere se è nullo. L'uso di load () ha un'ulteriore implicazione: l'applicazione può recuperare un riferimento valido (un proxy) a un'istanza persistente senza premere il database per recuperare il suo stato persistente. Quindi load () potrebbe non generare un'eccezione quando non trova l'oggetto persistente nella cache o nel database; l'eccezione verrebbe lanciata in seguito, quando si accede al proxy. Ovviamente, il recupero di un oggetto tramite identificatore non è flessibile quanto l'utilizzo di query arbitrarie.