2012-01-21 13 views
6

Diciamo che abbiamo uno a molti tra il Cliente e il telefono ..utilizzando modalità di recupero in ibernazione

class Customer{ 

@OneToMany(cascade = {CascadeType.ALL},mappedBy = "customer", fetch = FetchType.LAZY) 
@Fetch(FetchMode.SELECT) 
private List<Phone> phoneList; 

} 

Nel codice di cui sopra, qual è la differenza tra recuperare = FetchType.LAZY e FetchMode.SELECT.

Ho letto che entrambi sono uguali, entrambi caricarono pigramente la raccolta sottostante.

Qualcuno può spiegarmi quale usare quando?

risposta

13

tipo di recupero (lazy/pronto) si riferisce a quando Sospensione preleverà l'associazione, sia in anticipo quando recupera l'entità (ansioso), o se attende il codice a chiedere per l'associazione (artificiale).

La modalità di recupero (select/join) si riferisce a come Hibernate recupera l'associazione, cioè utilizza un'istruzione SELECT aggiuntiva o utilizza un join

Alcune combinazioni di queste non hanno senso, ad es. pigro + aderire. Se utilizzi il recupero pigro, allora la modalità di recupero SELECT è l'unica che puoi fare.

Se si utilizza il richiamo eager, è possibile scegliere di utilizzare la modalità di recupero.

+0

Grazie per la risposta.Quindi, in caso di richiamo ansioso, quale modalità di recupero è meglio usare..SELEZIONARE o UNISCITI? – Anand

+0

@anand: non esiste "migliore", ma se il join funziona per te, di solito offre prestazioni migliori. – skaffman

Problemi correlati