Cześć Mirki,
od jakiegoś czasu tworzę podcast Backend na Froncie, w którym rozmawiam z gośćmi na tematy programistyczne (zwykle około .NETowe)
Dzisiaj pojawił się odcinek numer 6, w którym razem z Michałem Białeckim odpowiemy na pytanie Dlaczego używamy Entity Framework?

Rozmawialiśmy o tym:
Co to jest orm
  • Odpowiedz
  • Otrzymuj powiadomienia
    o nowych komentarzach

@Edelner: generalnie olałbym Hibernate na wstępie, i działał na Spring Data JPA. Za to jak już zaczniesz coś więcej programować to polecam od czasu do czasu poogarniać co tam sie dzieje "pod spodem" - czyli np. właśnie Hibernate. Zrozumiesz wtedy więcej rzeczy i będziesz pisał lepsze apki :)
  • Odpowiedz
@RobieInteres: Enuma nie możesz redefiniować w runtime (nie można po prostu wrzucić do tabeli nowej wartości i jej używać), dlatego osobna tabela dla niego praktycznie nie daje żadnych korzyści, a wręcz przeciwnie - komplikuje zapytania, bo musisz robić dodatkowego joina, co jest upierdliwe, zwłaszcza jeśli masz kilka enumów. Jedyną wada EnumType.STRING jest trudniejsza zmiana nazwy poszczególnych wartości, ale z reguły robi się to rzadko.
Poza tym pełna normalizacja nie zawsze
  • Odpowiedz
Hejka, czy w swojej pracy używacie hibernate czy może bardziej niskopoziomowe narzędzia jak np. jooq / jdbi czy może nawet czystego jdbc?

Ogólnie zaczyna mnie od dłuższego czasu denerwować hibernate swoją złożonością, pułapkami i wygodniej byłoby mi pisać poprostu czystego SQLa i do tego jakieś customowe mappery czy coś - mam dużo większą kontrolę nad tym co się dzieje. Ale kojarze że w ofertach często się ten hibernate pojawia.

Trochę się zasiedziałem
  • 9
  • Odpowiedz
  • Otrzymuj powiadomienia
    o nowych komentarzach

@bartis55: jeśli znasz hibernate na takim bardzo średnim poziomie (tak żeby dobrze opisać encje i je pomapować) to tam możesz zrobić mnóstwo błędów nawet przypadkowo i nieświadomie :D

@WeShouldAllRun: no właśnie, na początku mojej kariery hibernate wydawał mi się świetny, pare adnotacji i nie muszę pisać SQLa. Ale im większego doświadczenia nabieram tym bardziej się utwierdzam że te kombajny (typu hibernate) mogą bardziej zaszkodzić niż pomóc na dłuższą
  • Odpowiedz
Hej, korzystam z Hibernate w mojej aplikacji Spring Boot. Model bazy danych jest dość skomplikowany, oznacza to że od tabelki przechowującej id właściciela zasobu, do samego zasobu, mogą być nawet 4 inne tabele po drodze. W jaki sposób mam sprawdzać czy użytkownik próbujący uzyskać dostęp do zasobu jest jego właścicielem? Nie uśmiecha mi się pobieranie po kolei 5 encji w górę tylko aby pobrać id. #jpa #hibernate #
  • 5
  • Odpowiedz
  • Otrzymuj powiadomienia
    o nowych komentarzach

Jeżeli zasób jest bezpośrednią własnością właściciela, to rekord powinien zawierać jego ID. Jeżeli zasób jest częścią jakiegoś złożonego obiektu, to i tak potrzebujesz całości, żeby mieć kontekst. Wówczas zazwyczaj będziesz odczytywał dane od drugiej strony. Jesi to jeszcze inny przypadek, to można zrobić jakąś tabelę asocjacyjną albo stored procedure, która będzie zwracać to, czego potrzebujesz. Dane przetwarzamy zawsze jak najbliżej źródła :)
  • Odpowiedz
Czy Hibernate w 2021 to najlepszy wybór?

https://kodujmy.pl/czy-hibernate-w-2021-to-najlepszy-wybor/

Mamy rok 2009, jestem studentem i w trakcie przedmiotu o nowoczesnych aplikacjach internetowych, po raz pierwszy słyszę o Hibernate. Jestem niesamowicie podekscytowany , bo wizja tego, aby zapomnieć o SQL i móc dostawać się do danych przy użyciu czystej Javy brzmi bardzo atrakcyjnie. Ok, gdzieś tam w tle jest jeszcze ten paskudny xml z konfiguracją, ale da się to przełknąć…

To
  • 1
  • Odpowiedz
  • Otrzymuj powiadomienia
    o nowych komentarzach

via Wykop Mobilny (Android)
  • 0
Jak chce sobie zapisać w spring data w relacji many to many ale bez duplikatów to jak to najlepiej zrobić? Bo mam sobie Book i Category, category ma unique name. No i przy dodawaniu ksiazki chce sobie dodać kategorie które nie istnieją a te co istnieją to tylko przypisac do tej książki, i już probowałem z 1000 rzeczy i jestem debilem help xD

Na zasadzie:

Book {
title:"blabla",
  • 1
  • Odpowiedz
  • Otrzymuj powiadomienia
    o nowych komentarzach

via Wykop Mobilny (Android)
  • 0
Ale ten #hibernate jest zagmatwany xD niby masz tylko 2 możliwości pobierania (lazy i eager) ale hola hola nie ma tak łatwo bo dla różnych typów relacji są inne domyślne, do tego zrobisz sobie lazy to Ci w-----e n+1, zrobisz eager z fetch to znowu produkt kartezjański, no to se wracasz do lazy i musisz sobie jakos rozbijać, do tego gurwa jeszcze zależy od fetchmode, od joinów, od tego czy
  • 27
  • Odpowiedz
  • Otrzymuj powiadomienia
    o nowych komentarzach

Miraksy,
jakieś sposoby na update encji na podstawie wartości przychodzących w obiekcie JAXB? Encje są w JPA.
Generalnie chodzi mi o to, aby nie sprawdzać ręcznie wszystkich pól czy nie są null.
#java #spring #hibernate
  • 5
  • Odpowiedz
  • Otrzymuj powiadomienia
    o nowych komentarzach

@Patres: Świetnie tylko moje pola w DTO nazywają się kompletnie inaczej niż encje. To samo z kolekcjami. Użyłem MapStruct(nullvaluepropertystrategy.ignore) i w sumie rozwiązuje moj problem.
  • Odpowiedz
Mirkasy,
jakie jest prawidłowe podejście do zapisu encji w Spring Data.

final User user = UserMapper.mapFrom(UserDto);
final savedUser = userRepository.save(user);
savedUser.getAddresses().forEach(address -> address.setUser(savedUser));
  • 6
  • Odpowiedz
  • Otrzymuj powiadomienia
    o nowych komentarzach

Mireczki potrzebuję zmapować wynik @NamedNativeQuery na klasyczne POJO (nie entity).
Mój ból polega na tym, że w projekcie mam jpa 2.0 a @ConstructorResult pojawił się dopiero w 2.1 ()

Kojarzycie jak to zrobić inaczej?
Nie chcę mapować na entity bo musiałbym niepotrzebnie dorzucać tabele do bazy a potrzebuję tych wyników jako obiekt jedynie w trakcie działania aplikacji, bez persystencji.

#programowanie #programista15k #
  • 1
  • Odpowiedz
  • Otrzymuj powiadomienia
    o nowych komentarzach

Mirkasy,
jeżeli chcę sobie w wielomodułowym projekcie stworzyć moduł który bedzie dostarczał model JPA np. user-model który będę dokładał do innych modułów to jakie zależności mi potrzebne do JPA?

#java #jpa #hibernate
  • 1
  • Odpowiedz
  • Otrzymuj powiadomienia
    o nowych komentarzach

@victordeleco2:
Pewnie da się z mniejszymi zależnościami, ale nie chce mi się szukać dokładnie. Ogólnie powinieneś dodać to co potrzebujesz: pakiet który ma adnotacje JPA. @Entity, @Table, @Column etc, jakieś walidatory jeśli je stosujesz.
  • Odpowiedz
Mireczki potrzebuję porady (again):
Mam w projekcie @NamedNativeQuery i robię selecta który ma w tabeli kolumnę z datą (np. CREATED). Potrzebuję na potrzeby warunku w kluzuli WHERE zmodyfikować wspomnianą datę i dodać do niej n dni. np.

select * from PRODUCTS where CREATED+n dni < current date
Idzie coś takiego w ogóle zrobić?
Jakieś wskazówki/hasła pod kątem których
  • 1
  • Odpowiedz
  • Otrzymuj powiadomienia
    o nowych komentarzach

@victordeleco2: w obu przypadkach to zależy z czego korzystasz. Zależy, czy w serwisie masz jakąś dodatkową logikę, a samą modyfikację obiektu możesz zrobić co najmniej na 3 sposoby z samym spring data.
  • Odpowiedz