Obecnie w aplikacji webowej wykorzystywany jest MyBatis, który daje dużą swobodę w definiowaniu zapytań oraz zwracanego z bazy modelu, jednak rozwiązanie to sprawia pewne trudności. Np.:

  • brak kontroli powiązania pomiędzy typem obiektowym, a definicją w maperze (po zmianie klasy modelu trzeba ręcznie zaktualizować mapowanie)
  • konieczność pisania dużej ilości kodu w celu realizacji prostych zapytań Mój wniosek na obecny moment jest taki, że rozwiązanie to daje dużą elastyczność i wygodę kosztem zwiększonego ryzyka błędów i narzutu przy tworzeniu prostych zapytań. Ponieważ zapytania wykorzystywane w aplikacji nie należą do bardzo wyrafinowanych ;) wydaje mi się, że zastosowanie innej technologii mogłoby się lepiej sprawdzić. Może Hibernate? Co o tym myślicie?
Obecnie w aplikacji webowej wykorzystywany jest MyBatis, który daje dużą swobodę w definiowaniu zapytań oraz zwracanego z bazy modelu, jednak rozwiązanie to sprawia pewne trudności. Np.: - brak kontroli powiązania pomiędzy typem obiektowym, a definicją w maperze (po zmianie klasy modelu trzeba ręcznie zaktualizować mapowanie) - konieczność pisania dużej ilości kodu w celu realizacji prostych zapytań Mój wniosek na obecny moment jest taki, że rozwiązanie to daje dużą elastyczność i wygodę kosztem zwiększonego ryzyka błędów i narzutu przy tworzeniu prostych zapytań. Ponieważ zapytania wykorzystywane w aplikacji nie należą do bardzo wyrafinowanych ;) wydaje mi się, że zastosowanie innej technologii mogłoby się lepiej sprawdzić. Może Hibernate? Co o tym myślicie?

Przyznam szczerze, że trudno mi dyskutować nad tym, które rozwiązanie mogłoby być lepsze, bo nie mam zbyt wielkiego doświadczenia ani dokładnej wiedzy o tym jak projekt dalej będzie się rozwijał. W każdym bądź razie z ciekawości zacząłem przerabiać klasy modelu danych tak, by wykorzystać JPA/Hibernate: https://github.com/bonczek/mroza/tree/feature/Hibernate_configuration

Wiele tam jest jeszcze do zrobienia, ale przy skomplikowanych zapytaniach z klasy Program trochę się zacząłem wkurzać. Chyba najlepsze w tym wszystkim jest powszechność takiego zastosowania. Klasy modelu mogłem wygenerować automatycznie na podstawie bazy danych, dodatkowo szybko się okazało, że id typu Integer w każdej klasie nie zgadza się z typem BIGSERIAL w PostgreSQL. Dużo lepiej zarządza się relacjami, zamiast zapamiętywać samemu id i pamiętać o odpowiednim odpytaniu. Wydaję mi się, że dużo lepiej utrzymywałoby mi się taki projekt, ale to tylko moje zdanie.

Z minusów to wymieniłbym, że trzymanie skomplikowanych zapytań w klasach może być trochę bałaganiarskie, no i że trzeba się trochę nagimnastykować, by te wszystkie zapytania przełożyć na Hibernate smile

Przyznam szczerze, że trudno mi dyskutować nad tym, które rozwiązanie mogłoby być lepsze, bo nie mam zbyt wielkiego doświadczenia ani dokładnej wiedzy o tym jak projekt dalej będzie się rozwijał. W każdym bądź razie z ciekawości zacząłem przerabiać klasy modelu danych tak, by wykorzystać JPA/Hibernate: https://github.com/bonczek/mroza/tree/feature/Hibernate_configuration Wiele tam jest jeszcze do zrobienia, ale przy skomplikowanych zapytaniach z klasy Program trochę się zacząłem wkurzać. Chyba najlepsze w tym wszystkim jest powszechność takiego zastosowania. Klasy modelu mogłem wygenerować automatycznie na podstawie bazy danych, dodatkowo szybko się okazało, że id typu Integer w każdej klasie nie zgadza się z typem BIGSERIAL w PostgreSQL. Dużo lepiej zarządza się relacjami, zamiast zapamiętywać samemu id i pamiętać o odpowiednim odpytaniu. Wydaję mi się, że dużo lepiej utrzymywałoby mi się taki projekt, ale to tylko moje zdanie. Z minusów to wymieniłbym, że trzymanie skomplikowanych zapytań w klasach może być trochę bałaganiarskie, no i że trzeba się trochę nagimnastykować, by te wszystkie zapytania przełożyć na Hibernate :)
164
views
1
replies
2
followers
live preview
enter atleast 10 characters
WARNING: You mentioned %MENTIONS%, but they cannot see this message and will not be notified
Saving...
Saved
All posts under this topic will be deleted ?
Pending draft ... Click to resume editing
Discard draft