Qual è la differenza tra lazy="true"
e lazy="proxy"
in NIBEL?nibernate opzioni di caricamento lazy
risposta
lazy = "proxy" indica che NHibernate inizializzerà lentamente le istanze della classe; Quando NHibernate recupera un'istanza della classe dal database, in questo caso non restituirà un'istanza "reale" della classe, ma piuttosto fornirà un proxy. Cioè, restituirà un oggetto che è di un altro tipo, più specificamente, un oggetto che è una sottoclasse della tua classe (generata da NHibernate attraverso la generazione di IL).
L'oggetto che verrà fornito, è un proxy e l'unica proprietà popolata è la proprietà Id. Non appena si chiama un'altra proprietà sull'istanza, NHibernate inizializzerà il proxy e recupererà dal database tutte le altre proprietà/raccolte (ad eccezione di quelle che sono pigre caricate).
Lazy = "true" viene utilizzato su un altro livello. Mentre lazy = "proxy" è usato a livello di classe, lazy = "true" è usato a livello di raccolta. Significa che la raccolta dovrebbe essere pigra.
Il documentation reference dice che il valore dell'attributo proxy è in:
lazy="proxy|no-proxy|false"
pigri (opzionale - il default è di proxy): Per impostazione predefinita, le associazioni singolo punto sono proxy.
lazy = "no-proxy" specifica che la proprietà deve essere recuperata pigramente quando si accede per la prima volta alla variabile di istanza (richiede la strumentazione bytecode build-time).
lazy = "false" specifica che l'associazione verrà sempre recuperata con entusiasmo.
Non dovrebbe lazy = "proxy" specificare che la proprietà deve essere recuperata pigramente quando si accede per la prima volta alla variabile di istanza –
Ulteriori informazioni possono essere trovate sul blog di ayende: http://ayende.com/Blog/archive/2010/01/ 28/nhibernate-new-feature-no-proxy-associations.aspx –
L'ho appena riformattato in modo che le opzioni siano su linee di differenza. –
Per impostazione predefinita, Hibernate3 utilizza il recupero lazy select per le raccolte e il recupero del proxy lazy per le associazioni a valore singolo. Queste impostazioni predefinite hanno senso per la maggior parte delle associazioni nella maggior parte delle applicazioni.
http://docs.jboss.org/hibernate/stable/core/reference/en/html_single/#performance-fetching-lazy
ho il sospetto un altro modo di pensare che sarebbe stato così.
class Foo
{
public virtual Bar SingleBar { get; set; }
public virtual ICollection<Bar> MultiBar { get; set; }
}
- lazy = "proxy" si applica agli oggetti singoli (cioè foo.SingleBar)
- lazy = "true" si applica a collezioni di oggetti (cioè foo.MultiBar)
(Non puoi impostare lazy = "proxy" su una raccolta, né puoi impostare lazy = "true" su un singolo riferimento, altrimenti l'NH genererà una XmlSchemaException che è un po 'criptica per i principianti.)
Operativamente fanno lo stesso abstr atto cosa: quando e solo quando si accede alla proprietà, NHibernate colpisce il database e popola la proprietà.
C'è tuttavia una leggera differenza nell'implementazione a causa di ciò che è necessario per recuperare gli oggetti (nel singolo caso, l'id del riferimento (Barra) è stato caricato con l'entità padre (Foo). sono sconosciuti e devono essere trovati in un'altra tabella)
Nell'app che stavo lavorando c'era una differenza tra "proxy" e "true". Nel caso in cui la chiave esterna avesse un valore che non era presente nella tabella associata lazy = "true" ha gettato ObjectNotFoundException durante la query di Linq mentre lazy = "proxy" ha funzionato come previsto. –
- 1. UITableView ottimizzazione caricamento lazy
- 2. Caricamento lazy primaverile - caricamento di un bean su tutti i bean @Lazy di quella classe
- 3. proprietà virtuali e caricamento lazy
- 4. nibernate alternate dimensione batch
- 5. quando utilizzare il caricamento Lazy/caricamento Eager in sospensione?
- 6. Gestione delle sessioni NHibernate e caricamento lazy
- 7. Caricamento Eager, Lazy ed esplicito in EF6
- 8. TableView con Lazy caricamento in mac osx
- 9. Lazy caricamento JavaScript e JavaScript incorporato
- 10. Che cos'è il caricamento lazy in Hibernate?
- 11. hibernate gestione sessione con caricamento lazy
- 12. Primefaces Lazy Caricamento dati non disponibile
- 13. Unit test e nibernate?
- 14. Schema singleton con combinazione di caricamento lazy e sicurezza thread
- 15. Entity Framework - Stop Lazy Caricamento di entità correlate su richiesta?
- 16. Strategie di caricamento Lazy/Eager in casi remoti (JPA)
- 17. JPA - Caricamento Lazy forzato solo per una determinata query
- 18. Entity Framework lazy loading
- 19. Lazy Loading vs Eager Loading
- 20. Scala Slick Lazy Fetch
- 21. nIBernate e SQL Server 2012 LocalDB
- 22. learning nibernate (con o senza fluente)
- 23. Come configurare Nibernate fluente con MySQL
- 24. Angular 2 lazy loading techniques
- 25. Spring @Autowired @Lazy
- 26. Hibernate lazy loading non funziona
- 27. Doctrine lazy loading
- 28. pigro Caricamento in Flexslider
- 29. È richiesto il caricamento lento per nibernazione?
- 30. less.js Lazy sheet load
E qual è la differenza per lazy = "true" allora? –
Sembra che tu non abbia risposto alla domanda. – gdoron