Weźmy przykład:
class Book {
String title
Author author
}
class Author {
...
}
Book book = Book.get(1)
Jak wiemy, domyślny tryb pobierania jest leniwy w zajęciach domen. Biorąc pod uwagę powyższy przykład, powiedzmy, że otrzymujemy obiekt book, a następnie obiekt Book zostaje automatycznie dołączony do obiektu sesji hibernacji, np. Pamięci podręcznej pierwszego poziomu. I po tym, jak obiekt domeny zostanie odłączony od obiektu sesji, a następnie spróbujemy pobrać book.author, w tym momencie wywołuje on wyjątek inicjalizacji Lazy.
Więc rozwiązaniem jest, aby mieć albo tryb pobierania jako chętny lub dołączyć do książki obiektu hibernacji sesji przy użyciu kodu podanego poniżej:
if(!book.isAttached()){
book.attach()
}
Opis podany powyżej jest jednym scenariuszu. Może być ich o wiele więcej. Proszę innych, żeby się nimi podzielili.
To działa dla mnie naprawdę dobrze, ale nużące jest umieszczanie go wszędzie tam, gdzie jest potrzebne! – IgniteCoders
@IgniteCoders Amit nie wydaje się być aktywny w SO. Czy wiesz, jakie przyczyny i przedmiot można odłączyć w jednej sesji? –
@AlexanderSuraphel Naprawdę nie wiem. Po prostu umieszczam go, gdy gdzieś wyjdzie wyjątek – IgniteCoders