Wpis z mikrobloga

mirki, znacie jakieś źródło wiedzy gdzie w pełni zrozumiem jak działa hibernate ze springiem? Jakoś do dzisiaj zdarza mi się, że w moim kodzie leci wyjątek LazyInitializationException - could not initialize proxy - no Session. Również chętnie bym się dowiedział jak najlepiej przeciążać equals i hashcode, albo jakie są dobre praktyki.

#java #hibernate #spring #programowanie
  • 12
@jaxon9000: a co do Lazy to po prostu chodzi o to, że jeżeli korzystasz z spring data Jpa domyślne ustawienia w relacji to takie, że mając relacje OneToMany lub ManyToMany, gdzie dana klasa(encja) ma listę(podzbiór) elementów to domyślnie spring korzysta z lazy loading czyli ładuje wszystko oprócz tej listy elementów, aby nie pobierać niepotrzebnie danych. Relacja ManyToOne lub OneToOne domyślnie jest ustawiona na EAGER czyli jeżeli w danej klasie(encji) masz jedno
@dupaztrupa
@jaxon9000

Działanie Lomboka opiera się na "hacku" - wykorzystuje nieudokumentowane API do generowania kodu. Jakie zagrożenia się za tym kryją to nie muszę mówić chyba, wystarczy wspomnieć że nieudokumentowane API mogą być usunięte w dowolnej chwili.

W prywatnym projekcie owszem, sam używam. W komercyjnym - w życiu. Nie chce być tym typem którego git blame wskaże za 10 lat jak się to #!$%@? i jakiś doświadczony inżynier będzie robił audyt czemu
to znaczy, że odczytujesz coś co jest lazy w innej transakcji albo poza transakcją

@dupaztrupa: to jest jasna i klarowne, ale jak mam tego unikać? Czy to znaczy że musze zawsze wrapować metody anotacją @Transactional? Albo robić nowe zapytanie za pomocą repozytorium?
Za równo pierwsze i drugie podejście jest słabe, ponieważ transakcja może być overkillem dla długich zapytań, a odpytywanie ponownie repozytorium jakieś takie nisko poziomowe - w sensie że