J-SPR-HIB-UTR – 3 pytania i odpowiedzi ze szkolenia (czerwiec 2016)

Pytania w tym artykule pojawiły się podczas szkolenia Utrwalanie danych z JPA/Hibernate  realizowanego w dniach 27-29.06.2016r


Który rodzaj buforowania jest najlepszy z punktu widzenia developera i samej aplikacji ?

W JPA mamy 2 rodzaje buforowania first level cache i second level cache oraz cache query , który defacto współpracuje z tym drugim. Jednak z poziomu programisty pod kontem utrzymania , łatwości implementacji i wydajności polecam cache oparty na frameworku np Spring na poziomie metod biznesowych ponieważ może korzystać z tego samego deskryptora opisującego działanie i zachowanie buforowanie np ehcache.xml a jego prostota i konfigurowalność będzie najlepsza jest to standard :JCache (JSR-107).

Czy relacje dwukierunkowe są dobre i kiedy jest stosować ?

Moja rada : zawsze jeśli tylko można ich unikamy ponieważ :
1.Następuje złamanie enkapsulacji
2. Musimy zawsze pamiętać aby odsłużyć dwie strony relacji
3. Typ bardziej abstrakcyjny powinien być ukryty
4. Cykliczność
5. Zawsze lepiej stosować agregator , czyli pojedyńczy punkt dostępu
Stosuj je tylko wtedy kiedy jest faktyczne uwarunkowanie biznesowe.

Jak uniknąć OutOfMemoryException ?

Nie ma na to uniwersalnego pytania ale musimy pamiętać , że następuje to wtedy kiedy wczytujemy w bufor hibernate za duży graf obiektów.
Jedne z możliwych rozwiązań to :

1. czyszczenie cache
2. flush dla kontekstu
3. dla przetwarzania wsadowego : hibernate.jdbc.batch.size = 50
4. wyłączenie cache drugiego poziomu hibernate.cache.use_second_level_cache = false
5. StatelessSession
6 zastosuj batch processing

Zobacz również

W 2024 r. podpisujemy kolejną umowę z Ministerstwem Klimatu i Środowiska na...
Stworzyliśmy Latarnik Wyborczy dla WWF, aby Obywatele mogli zweryfikować która partia jest...
Rozpoczynamy dziś kolejny projekt realizowany dla Ogólnopolskiego Towarzystwa Ochrony Ptaków....