2015-04-23 44 views
7

W Grails/GORM, jaka jest różnica między static mapping = {xyz lazy: false} & static fetchMode = [xyz: 'eager']?Grails/GORM: różnica między leniwymi: false i fetchMode chętnymi

Przykład:

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

myślę, że to może odpowiedzieć na pytanie: [http://stackoverflow.com/questions/654704/grails-gorm-default-fetch-strategy-when-to-set-fetchmode-to-eager- chętnie vS] [1] [1]: http://stackoverflow.com/questions/654704/grails-gorm-default-fetch-strategy-when-to-set-fetchmode-to-eager -eager-vs –

+2

Dzięki za link, ale odpowiedź wydaje się opisywać różnicę między 'lazy: true' &' lazy: false'. Odpowiedź nie wspomina o 'fetchMode = [...]' – XDR

+0

Byłoby miło, gdyby ktoś mógł odpowiedzieć na to pytanie, ponieważ nie znalazłem żadnego wyjaśnienia na temat dokumentacji grails ani w Internecie. – Merlin

Odpowiedz

4

Różnica między leniwy: fałszywy i fetchMode 'chętny'

  1. leniwy: false będzie pobrać powiązany obiekt domeny przez odpytywanie ponownie do bazy danych przy użyciu Wybierz Query, ale fetchMode "eager", który jest już nieaktualny (użyj polecenia fetch: "join") spróbuje połączyć się z powiązanymi tabelami (używając zewnętrznego sprzężenia) i pobrać powiązane obiekty w jednym zapytaniu.
  2. lazy: false będzie mieć jeszcze jedną kwerendę do bazy danych, aby pobrać powiązany obiekt domeny, a tym samym będzie mieć więcej interakcji z bazą danych, podczas gdy pobieranie: "dołącz" będzie mniej interakcji w celu pobrania tych samych danych.
  3. FetchMode Dołącz zastępuje właściwość leniwy. Zlekceważy to leniwego: fałsz.

Jeśli jesteś zainteresowany szczegółowym wyjaśnieniem Fetchmodes, spójrz na http://www.solidsyntax.be/2013/10/17/fetching-collections-hibernate/. W artykule opisano fetchmody trybu hibernacji oraz dane wyjściowe, które generują.

Mam nadzieję, że to pomoże.