Wpis z mikrobloga

Mam takie przemyślenia na temat #hibernate i jego używalności. Trochę #gorzkiezale (które chyba już wylewałem kiedyś, ale wyleje jeszcze raz bo mnie boli).

Aktualnie dla mnie największym problemem przy tworzeniu projektu jest gadanie kodu w #java z bazą danych #mssql
Aplikacja oparta jest na #spring i wykorzystuje Spring Data JPA przez Hibernate do komunikacji z bazą. No krew mnie zalewa jak z tego korzystam. Jest idealne do prostego CRUD, trochę bardziej skomplikowane jeśli chodzi o jakieś bardziej "złożone" relacje (powiązanie kilku tabel i pobranie danych z tych tabel, tak żeby wygenerowano jedną kwerendę jest po prostu nietrywialne, nie mówię że trudne czy niemożliwe ale w takim #dotnet to ma się #linq i bajka).

Ale najbardziej denerwuje mnie coś, co się nazywa "Missing 5%" (nie mogę wygoglować czy to oficjalna nazwa :P). W skrócie chodzi o to, w jakim stopniu trudno jest zrealizować coś czego twórcy frameworka nie przewidzieli do działania out-of-the-box. No i tutaj to już poezja jest z hibernate i spring data.

Mam bazę w mssql, gdzie mam umieszczone różne POI wraz z ich geolokalizacją. Żeby cokolwiek pobrać z bazy "w promieniu" x kilometrów to muszę do tego użyć procedury bezpośrednio w bazie danych, co trzeba robić co najmniej okrężną drogą. Jak zwrócę procedurą dokładnie dane dla jednego obiektu to bajka :), jak chcę tam zrobić joina to dziękuję dobranoc (przynajmniej wprost).

Chcę użyć EntityGraph (bo inaczej nie pobierzesz poprawnie relacji jedną kwerendą), ale wtedy nie możesz użyć JPQL z klauzula "IN" bo od czerwca zeszłego roku wisi bug w jirze hiebernate :)

Nie wiem czy jest ład i skład tej wypowiedzi, ale tldr jest taki, że wszystko tu jest złożone bardziej niż powinno być. W linq jest prościej, szybciej i bardziej wprost.
Musiałem się uzewnętrznić.

Pozdrawiam,
@KotoFan

#programowanie
  • 5