Hibernate a Spring.

Odpowiedz Nowy wątek
2017-08-05 21:17
0

Czy da się używać Hibenate w celu korzystania z Bazy danych, wraz ze Springiem? Słyszałem, że w Springu lepiej używać spring data zamiast Hibernate.
Jeśli, tak to po co został stworzony Hibernate?
Czy dalej się używa Spring MVC czy tylko "surowego" Springa?

Pozostało 580 znaków

2017-08-05 21:47
0

Da się.

Pozostało 580 znaków

2017-08-05 22:15
0

Ale po co używać Hibernate jeśli łatwiej użyć Spring Data? W czym jest on lepszy od Spring Data?
Co z drugim pytaniem?

Pozostało 580 znaków

2017-08-05 23:29
tk

Spring data to projekt skladajacy sie z kilku modulow. Jednym z tych modulow jest np. spring-data-jpa. JPA to dokument opisujacy system ORM. Hibernate jest niczym innym jak implementacja (jedna z wielu) tego standardu. Spring-data-jpa jest bardziej nakladka na JPA (czyli np. na Hibernate) niz jego zamiennikiem. Innymi slowy: zazwyczaj stosuje sie spring-data-jpa wlasnie w polaczeniu z biblioteka typu Hibernate.

Jezeli przyjdzie Ci pracowac z systemem ORM typu JPA (np. z Hibernate) to spotkasz sie glownie z nastepujacymi zagadnieniami:
1) Tworzeniem / rozbudowa klas zwanych encjami. Obiekty tych klas moga byc utrwalane w bazie danych. W uproszczeniu mozesz sobie wyobrazic obiekt encji jako pojedynczy rekord w tabeli bazy danych. Encje w duzym stopniu odzwierciedlaja strukture bazy danych (tabele, zwiazki miedzy tabelami itd.). W tym punkcie zalozylem, ze pracujemy na typowej relacyjnej bazie danych.
2) Wyciaganiem danych z bazy danych.
3) Dodawaniem, usuwaniem i modyfikacja danych przechowywanych w bazie danych.

Trudno jest sie obejsc bez JPA (czyli bez Hibernate lub innej implementacji JPA) podczas prac nad encjami. Natomiast podczas prac nad punktami 2 i 3 warto wykorzystac te cala nakladke, ktora dostarcza spring-data (glownie chodzi o repozytoria, ktore pracuja na encjach) i wlasciwie mozna olac oficjalny sposob dostepu do danych na korzysc ww. nakladki.

Byc moze da sie wykorzystac spring-data w taki sposob aby nie korzystac z JPA, ale polaczenie obu tych rzeczy wydaje mi sie dosc popularne (szczegolnie w sytuacji kiedy Hibernate pelni role implementacji JPA).

Z tego co wiem nadal sie uzywa Spring MVC (moge nie byc na biezaco). Oczywiscie o ile uzycie wzorca MVC jest do czegos potrzebne (nie zawsze jest).

edytowany 7x, ostatnio: tk, 2017-08-07 21:18
Pokaż pozostałe 2 komentarze
Jaki sens mają "relacje między relacjami"? - somekind 2017-08-07 02:34
@somekind: a gdzie tak napisalem? - tk 2017-08-07 21:03
relacje miedzy tabelami, a tabela to relacja, więc... - somekind 2017-08-07 21:07
@somekind: uczepiles sie do tego stopnia, ze nawet nie bardzo wiem jak to poprawic :) "związków między tabelami" bedzie ok czy tez zle? :) - tk 2017-08-07 21:17
No tak będzie poprawnie. - somekind 2017-08-07 21:17

Pozostało 580 znaków

2017-08-06 00:13
0

Dzięki za bardzo rozpisana odpowiedź, ale mam jeszcze jedno pytanie. A bardziej doprecyzowanie czegoś innego. Chodziło mi bardziej, czy używa się Spring Boota To co można https://start.spring.io tutaj stworzyć, czy w jakiś inny sposób się używa springa jako FW po stronie serwera?

Przykro mi, ale nie korzystalem nigdy ze Spring Boota. - tk 2017-08-06 00:21
Czyli surowy spring? - Aisekai 2017-08-06 00:22
@Aisekai: a moglbys troche bardziej klarownie zdefiniowac pojecie "surowego Springa", bo odnosze wrazenie, ze nie do konca sie rozumiemy. Szczegolnie nie rozumiem jaki jest zwiazek pomiedzy surowym Springiem a MVC. - tk 2017-08-06 00:24
W klasie uruchomieniowej, z tutoriali które przerabiam, jest użyta adnotacja @SpringBootApplocation czy jakoś tak. A surowy spring mam na myśli tworzenie Kontekstu aplikacji (AnnotationContextSpringConfiguration czy jakoś tak) - Aisekai 2017-08-06 00:34
Ja korzystalem tylko z "surowego Springa", ale z tego co kojarze (nie chce mi sie sprawdzac) to Spring Boot jest stosunkowo nowym wynalazkiem. Moze sie wiec okazac, ze korzysta sie z tego glownie przy nowych projektach. - tk 2017-08-06 00:43

Pozostało 580 znaków

2017-08-06 00:52
1

Spring Boot jest popularny bo przyspiesza pewne rzeczy, ale to nie jest żaden "inny" spring. To jest po prostu zbiór "standardowych" konfiguracji dla pewnych zastosowań.

Co do poprzednich pytań: to się wszystko buduje niejako "na sobie". JPA stoi na JDBC, Spring Data stoi na JPA. Użycie Spring Data nie oznacza że nagle nie masz już w projekcie JPA/Hibernate. To jest tylko taki dodatek który ułatwia pisanie DAO/Repozytoriów.


Masz problem? Pisz na forum, nie do mnie. Nie masz problemów? Kup komputer...
edytowany 1x, ostatnio: Shalom, 2017-08-06 00:54

Pozostało 580 znaków

2017-08-06 00:54
hue hue hue
0

dalej się używa tego czego się chce używać.

Pozostało 580 znaków

2017-08-06 01:35
0

Dzięki Wszystkim za odpowiedź. Trochę mi się już to rozjasnilo.

Pozostało 580 znaków

2017-08-06 19:10
0

Jeszcze jedno pytanie mi się nasunelo. Kiedy stosować, albo Kiedy korzystać z, repozytoriow, kiedy z DAO a kiedy z prostych transakcji (pobranych z MenagerFactory)?

Pozostało 580 znaków

2017-08-06 19:23
0

Repository to w praktyce to samo co DAO. Z EnttiyManagera korzysta się na poziomie Repository, transakcje są na poziomie logiki biznesowej (czyli serwisów), sa rzadząne deklaratywnie (@Transactional), więc jedyne co trzeba zrobić to ew. konfiguracja JPA


Nie pomagam przez PM. Pytania zadaje się na forum.
edytowany 1x, ostatnio: scibi92, 2017-08-06 19:25
Repository to w praktyce to samo co DAO czekam z popkornem aż wpadnie tu @somekind :P - Shalom 2017-08-06 22:09
No teoretycznie Repository jest związane chyba z jakąś jedną encją, ale to są bardzo spokrewnione terminy. - scibi92 2017-08-06 22:36

Pozostało 580 znaków

2017-08-07 02:39
0
scibi92 napisał(a):

Repository to w praktyce to samo co DAO.

To chyba w Springu, bo w profesjonalnym świecie:

  1. repozytorium jest jednym z kilku podstawowych tworów DDD, jeśli nie mamy DDD, to nie mamy czego nazwać "repozytorium";
  2. repozytorium zapewnia wyglądający jak kolekcja dostęp do aggregate rootów (nie encji, bo na pojedynczych encjach nie ma sensu pracować);
  3. nie musi być związane z bazą danych.

No i generalnie jest to najbardziej niepotrzebny wzorzec projektowy.


"HUMAN BEINGS MAKE LIFE SO INTERESTING. DO YOU KNOW, THAT IN A UNIVERSE SO FULL OF WONDERS, THEY HAVE MANAGED TO INVENT BOREDOM."
edytowany 1x, ostatnio: somekind, 2017-08-07 02:39
Pokaż pozostałe 4 komentarze
I w tym CrudRepository umieszcza się logikę biznesową? - somekind 2017-08-08 10:29
Nie, są tylko operacje bazodanowe (tzn jeśli korzystamy ze Spring Data JPA) - scibi92 2017-08-08 10:30
No, czyli to nie jest to, o czym ja mówię. - somekind 2017-08-08 12:14
No nie jest, napisałem własnie to. Tak się nazywa i tyle. - Lukasz_ 2017-08-09 10:19

Pozostało 580 znaków

Odpowiedz
Liczba odpowiedzi na stronę

1 użytkowników online, w tym zalogowanych: 0, gości: 1, botów: 0