2015-04-23 9 views
7

In Grails/GORM, qual è la differenza tra static mapping = {xyz lazy: false} & static fetchMode = [xyz: 'eager']?Grails/GORM: differenza tra lazy: false & fetchMode eager

Esempio:

class Book { 
    static belongsTo = [author: Author] 
    static mapping = {author lazy: false} 
    static fetchMode = [author: 'eager'] 
} 
+0

Penso che questo potrebbe rispondere alla tua domanda: [http://stackoverflow.com/questions/654704/grails-gorm-default-fetch-strategy-when-to-set-fetchmode-to-eager- ansioso-vs] [1] [1]: http://stackoverflow.com/questions/654704/grails-gorm-default-fetch-strategy-when-to-set-fetchmode-to-eager -eager-vs –

+2

Grazie per il link, ma la risposta sembra descrivere la differenza tra 'lazy: true' e' lazy: false'. La risposta non menziona 'fetchMode = [...]' – XDR

+0

Sarebbe bello che qualcuno potesse rispondere a questa domanda in quanto non ho trovato alcuna spiegazione sulla documentazione di Grails né su Internet. – Merlin

risposta

4

La differenza tra pigro: true e fetchMode 'ansioso' sono

  1. pigro: true otterrà l'oggetto dominio associato tramite una query di nuovo al database utilizzando Seleziona Query, ma fetchMode 'eager' che ora è deprecato (usa fetch: 'join') proverà a unirsi alle tabelle associate (usando outer join) e recupererà gli oggetti associati in una singola query.
  2. lazy: false avrà un'altra query al database per recuperare l'oggetto dominio associato e quindi avrà più interazioni con il database mentre fetch: 'join' avrà meno interazione per recuperare gli stessi dati.
  3. FetchMode Join sostituisce la proprietà lazy. Semplicemente ignorerà il pigro: falso.

Se sei interessato a una spiegazione dettagliata su Fetchmodes, dai un'occhiata a http://www.solidsyntax.be/2013/10/17/fetching-collections-hibernate/. L'articolo descrive i fetchmode di Hibernate e l'output che producono.

Spero che questo aiuti.

Problemi correlati