konto usunięte

Temat: JPA vs Hibernate? Plusy, minusy ?

Cześć.

Zacząłem próbować z JPA ale mam wrażenie że jest to jakieś takie oporne a wszyscy wokoło wychwalają pod niebiosa Hibernate. To do programu o którym jest długi wątek.
Zacheusz Siedlecki

Zacheusz Siedlecki Senior Java
Architect, Working
Manager

Temat: JPA vs Hibernate? Plusy, minusy ?

Hibernate implementuje JPA
osobiście wolę TopLink

konto usunięte

Temat: JPA vs Hibernate? Plusy, minusy ?

a co jest prostsze w użyciu?

konto usunięte

Temat: JPA vs Hibernate? Plusy, minusy ?

chodz sam nie korzystalem z toplink to raczej uzywa sie tak samo jak hibernate, skoro implementuje jpa to bedzisz mial te same metody wiec i uzycie to samo,

konto usunięte

Temat: JPA vs Hibernate? Plusy, minusy ?

to co lepiej w końcu?

konto usunięte

Temat: JPA vs Hibernate? Plusy, minusy ?

To tez zalezy od serwera, jak bedziesz robil ejb co bedzie utrwalal cos w bazce i korzystal z jboss to hibernate jest dostarczany z jboss jako implementacja jpa, jak pozniej bedziesz chcial aplikacje pzreniesc na glassfish np to wtedy dzieki temu ze w jpa psiales aplikacje pzreniesiesz a implementacja jpa bedzie toplink bo o ile dobrze pamietam to glassfisj korzysta z toplinka

konto usunięte

Temat: JPA vs Hibernate? Plusy, minusy ?

Autorowi wątku chyba nie chodziło o implementację JPA ale o "czysty" Hibernate vs. JPA.

Ja osobiście preferuję czysty Hibernate ze względu na to że nie jest ograniczony dość wąskim (JPA 1.0) API w którym to przykładowo nie ma Query by Criteria. Ja po przejściu z JPA na Hibernate odczułem dużą ulgę, nie musiałem kombinować z wieloma rzeczami. Ciężko mi wymienić wszystkie różnice bo o dość wielu już zapomniałem ale wystarczy spojrzeć na Javadoc od Hibernate Annotations by zobaczyć jak wiele funkcjonalności oferuje w porównaniu z JPA.

Co do różnych implementacji JPA to nie jest tak kolorowo i czasem nie wystarczy szybka podmiana providera w konfiguracji. Zmiana providera JPA wydaje mi się na tyle rzadka że wiązanie się z API "czystego" Hibernate nie jest żadnym problemem.
Zacheusz Siedlecki

Zacheusz Siedlecki Senior Java
Architect, Working
Manager

Temat: JPA vs Hibernate? Plusy, minusy ?

do glassfisha możesz przecież podpiąć hibernate itd. ;)

konto usunięte

Temat: JPA vs Hibernate? Plusy, minusy ?

Artur Zabroński:
Autorowi wątku chyba nie chodziło o implementację JPA ale o "czysty" Hibernate vs. JPA.
Co do różnych implementacji JPA to nie jest tak kolorowo i czasem nie wystarczy szybka podmiana providera w konfiguracji. Zmiana providera JPA wydaje mi się na tyle rzadka że wiązanie się z API "czystego" Hibernate nie jest żadnym problemem.

no wlasnie sie tak kiedys zastanawialem czy to by tak gladko przeszlo w jakims duzym projekcie, bo pamietam jak jeszcze w poprzedniej pracy podmienianybyl sterownik jdbc to tez wychodzily rozne dziwne rzeczy :)

konto usunięte

Temat: JPA vs Hibernate? Plusy, minusy ?

Zacheusz Siedlecki:
do glassfisha możesz przecież podpiąć hibernate itd. ;)

no tak tak :), ja to tak pogladowo przytoczylem bo po prostu skojarzylem ze domyslnie z glass jest dostarczany inny provider z tad taki przyklad :)
Jakub S.

Jakub S. Java Developer / CQ5
Developer

Temat: JPA vs Hibernate? Plusy, minusy ?

Przecież użycie JPA, Hibernate bądź Toplink to kwestia wyboru a nie serwera.

konto usunięte

Temat: JPA vs Hibernate? Plusy, minusy ?

Przeciez napisalem ze jest defaultowo dostarczany z jboss hibernate, czy napsialem ze nie mozna sobie tego zmienic ?
Łukasz Żuchowski

Łukasz Żuchowski Software Wizard

Temat: JPA vs Hibernate? Plusy, minusy ?

Marek Urbanowicz:
Cześć.

Zacząłem próbować z JPA ale mam wrażenie że jest to jakieś takie oporne a wszyscy wokoło wychwalają pod niebiosa Hibernate. To do programu o którym jest długi wątek.

Ja bym ci polecił Hibernate, dlaczego:

1. Jest chyba najbardziej rozwiniętym frameworkiem ORM, posiada wiele dodatkowych modułów (np. Hibernate search, criteria etc.).

2. Jest chyba zdecydowanie najpopularniejszym rozwiązaniem. Duże wsparcie w community oraz duża ilość materiałów.

3. Ma bogatsze API niż czyste JPA (już wcześniej wspomniane).

4. Nie jest standardem a jedynie rozwiązaniem oferowanym przez jednego z dostawców. Jest więc bardziej elastyczny i szybciej tam pojawią się jakieś nowości niż w standardzie. Chociaż bycie standardem ma też swoje dobre strony.

5. Hibernate przyda ci się w późniejszej pracy zawodowej, a przy okazji implementuje JPA więc i JPA nie będzie ci obce.

Co do Toplink'a się nie wypowiadam, bo nie znam. Ale nie jest to popularne rozwiązanie przynajmniej w Polsce (w stostunku do hibernate'a który jest wszędzie).

konto usunięte

Temat: JPA vs Hibernate? Plusy, minusy ?

hmmm..
a powiedz mi z czego najlepiej się nauczyć hibernate.. bo materiałów jest ogromnie dużo.

czy żeby realizować rzeczy typu dodanie, wyszukiwanie w bazie, usuwanie,edycja naprawdę trzeba aż tak dużo kodu.. ?

w php to było banalne po prostu a w javie to jest rzeź.. przynajmniej na razie.. a może po prostu trzeba załapać schematy? i np. porobić sobie gotowe jakieś funkcje żeby nie pisać w kółko tych samych fragmentów kodu?
Łukasz Żuchowski

Łukasz Żuchowski Software Wizard

Temat: JPA vs Hibernate? Plusy, minusy ?

Ja uważam, że najlepsza książka o hibernate'cie (jaka do tej pory się ukazała) to:
http://www.manning.com/bauer2/

Ale czy jest ona najlepsza na quick start, tego nie wiem.

konto usunięte

Temat: JPA vs Hibernate? Plusy, minusy ?

Ja przeczytalem http://apress.com/book/view/1590596935 a pozniej uzupelnialem Hibernate in action i bylo ok

konto usunięte

Temat: JPA vs Hibernate? Plusy, minusy ?

Marek Urbanowicz:
hmmm..
a powiedz mi z czego najlepiej się nauczyć hibernate.. bo materiałów jest ogromnie dużo.

Najlepsza pozycja to Java Persistence with Hibernate, której autorami są twórcy Hibernate'a. Jest jedną z tych książek, które bardzo długo się czyta, ale jest tam prawie wszystko.
Hibernate: od nowicjusza do profesjonalisty też czytałem ale miałem wrażenie że autorzy ślizgają się po temacie. Na pewno po przeczytaniu tej ksiązki profesjonalistą nie zostaniesz.
Ponoć dobra na początek jest: Hibernate Made Easy: Simplified Data Persistence with Hibernate and JPA ale jej nie czytałem.
Dokumentacja też jest całkiem niezła, coś jakby okrojona wersja pierwszej wymienionej książki.
czy żeby realizować rzeczy typu dodanie, wyszukiwanie w bazie, usuwanie,edycja naprawdę trzeba aż tak dużo kodu.. ?

Cała sztuka w tym żeby tak napisać mapowania, że zapis do bazy sprowadza się do:
session.save(root_object);

gdzie root_object ma referencje do innych obiektów tworzących bardziej skomplikowaną strukturę modelującą rzeczywistość biznesową. Czyli jak zapisujesz obiekt książka, który ma pole autor, to chcesz aby ten autor też się automatycznie zapisał przy zapisie książki.
Jeżeli chcesz zobaczyć jak fajnie wpasować Hibernate'a w całą aplikację, to polecam książkę POJOs in Action.

konto usunięte

Temat: JPA vs Hibernate? Plusy, minusy ?

Marek Urbanowicz:
hmmm..
a powiedz mi z czego najlepiej się nauczyć hibernate.. bo materiałów jest ogromnie dużo.

na start to guide z hibernate.org wystarczy ;-)
czy żeby realizować rzeczy typu dodanie, wyszukiwanie w bazie, usuwanie,edycja naprawdę trzeba aż tak dużo kodu.. ?

hmm duzo? to zalezy jak na to patrzysz. w czystym php to moze i byloby mniej ale jakbys chcial juz pracowac na obiektach to tez trzeba popsiac klasy modelu zrobic mapowania i najlepiej zastosowac jakis framework do tego.
w php to było banalne po prostu a w javie to jest rzeź.. przynajmniej na razie.. a może po prostu trzeba załapać schematy? i np. porobić sobie gotowe jakieś funkcje żeby nie pisać w kółko tych samych fragmentów kodu?

to jak nie powielac kodu napewno znajdziesz w sieci nawet w prostych przykladachPrzemysław Chmielewski edytował(a) ten post dnia 31.10.08 o godzinie 09:27
Adam Woźniak

Adam Woźniak software architect
and developer

Temat: JPA vs Hibernate? Plusy, minusy ?

Marek Urbanowicz:
hmmm..
a powiedz mi z czego najlepiej się nauczyć hibernate.. bo materiałów jest ogromnie dużo.

Osobiście uczyłem się z manuala dostarczonego wraz z dystrybucją Hibernate.
czy żeby realizować rzeczy typu dodanie, wyszukiwanie w bazie, usuwanie,edycja naprawdę trzeba aż tak dużo kodu.. ?

w php to było banalne po prostu a w javie to jest rzeź.. przynajmniej na razie.. [..]

Tu się nie zgodzę, że współpraca kodowanie w Hibernate jest uciążliwe (tzw. rzeź). Początki są może i trudne, bo trzeba nauczyć się podstaw Hibernate (Hibernate, u swoich podstaw, jest znacząco różny w swojej filozofii, od np. JDBC).

Proces ręcznego mapowania table na klasy Java+Hibernate trochę czasu zabiera, ale, już mając pomapowane tabele na klasy, Hibernate odpłaci nam tym, że operacje bazodanowe, juz przy użyciu Hibernate (lub JPA), robi się szybko i wręcz przyjemnie :)

Zaryzykuję stwierdzenie, że tym nasz projekt jest większy, tym więcej pożytku będzie z zastosowania Hibernate (JPA) w porównaniu np. z JDBC.

A od siebie dodam, że pisanie większego projektu przy pomocy JDBC do dla mnie byłaby masakra. Hibernate/JPA wiele wnosi w proces panowania nad projektem, łatwiej zapanować nad złożonością.

Pozdrawiam, Adam Woźniak
Adam Woźniak

Adam Woźniak software architect
and developer

Temat: JPA vs Hibernate? Plusy, minusy ?

W temacie: JPA czy Hibernate

Z mojej perspektywy, pytanie "JPA czy Hibernate?" można śmiało zredukować do pytania "czy w przyszłości w moim projekcie zamierzam podmieniać silnik JPA?".

Jeżeli odpowiedź na drugie pytanie, brzmi *nie* (... zamierza zmieniać silnika JPA), to zdecydowanie polecam Hibernate.

JPA w końcu, to jedynie podzbiór możliwości Hibernate, więc po co wybierać okrojona funkcjonalność, zamiast wybrać większa funkcjonalność, która przekłada się również na większe bezpieczeństwo projektu (zmniejsza się ryzyko, że pewnego pięknego dnia okaże się, że absolutnie potrzebujemy funkcjonalności, której (niestety)brak w JPA, a jest w Hibernate.

Aby nie być gołosłowny, wymienię na szybko (to co pamiętam) rzeczy, które są jedynie w Hibernate (nie ma w JPA), bez których moje projekty oparte o Hibernate nie mogłyby się obejść:

ScrollableResults

FetchMode

@org.hibernate.annotations.Entity(dynamicInsert=true, dynamicUpdate=true)

@GeneratedValue(strategy = GenerationType.SEQUENCE, generator = "my_generator")
@SequenceGenerator(name = "my_generator", sequenceName = "ZDEFINITIONS_SEQ", allocationSize=10)

... a to i tak jedynie część rzeczonych funkcjonalności, których w JPA się nie doszukałem.

Pozdrowienia,
Adam Woźniak

Następna dyskusja:

JSF, EJB3, maven, JPA+hiber...




Wyślij zaproszenie do