LAzy initialization and performance

LAzy initialization and performance
remigio
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 357
0

Hej

Chciałem się dowiedzieć czy można w jakiś dobry sposób zastąpić to lazy.
Mianowicie chodzi mi o wydajność takiego zastosowania.

Przypuśćmy że mamy dwie tabele Users oraz Addresses. Users jest do Addresses w relacji OneToMany z ustawioną LazyInitialization...

Jeżeli wyciągnę userów a później odwołam sie do metody getAdressess to automatycznie dostanę dwa zapytania.
Co jest lepsze...
zapytać dwa razy bazę czy ustawić Eager jako FetchType (słyszałem że jednymi z najbardziej czasochłonnych operacji w apce są własnie połączenia z bazą).
Czy może ktoś zna jakiś inny trick jak to uniknąć tego drugiego połączenia z bazą. Patrzyłem na Constructors Expression ale jest bardzo cięzko z wykrywaniem błędów w późniejszym etapie.

Pozdr

krzysiek050
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 1272
4
  1. Zostaw na Lazy.
  2. Jeżeli wiesz że będziesz korzystał z adresów, zrób z apytanie z join fetch. Wtedy automatycznie zostaną dodane dane z adress.

I to tyle :)

Shalom
  • Rejestracja: dni
  • Ostatnio: dni
  • Lokalizacja: Space: the final frontier
  • Postów: 26433
1

Ani jedno ani drugie. Tak jak pisze @krzysiek050 należy zrobić fetch join a nie cudować.

Zarejestruj się i dołącz do największej społeczności programistów w Polsce.

Otrzymaj wsparcie, dziel się wiedzą i rozwijaj swoje umiejętności z najlepszymi.