konto usunięte

Temat: JPA vs Hibernate? Plusy, minusy ?

Ja może tylko dorzucę link do artykułu na temat JPA 2.0:
http://j2ee.pl/2009/08/23/jpa-2-0/
Grzegorz L.

Grzegorz L. Software Developer

Temat: JPA vs Hibernate? Plusy, minusy ?

Adam Woźniak:
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ść:
@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.

Nie czepiam się, ale dla jasności:

http://java.sun.com/javaee/5/docs/api/javax/persistenc...

http://java.sun.com/javaee/5/docs/api/javax/persistenc...

Temat: JPA vs Hibernate? Plusy, minusy ?

A mnie najprzyjemniej się pracuje z JDO.

Hibernate nic nie brakuje, ale JDO jest bardziej "database type agnostic" tzn. nie zakłada z góry że każdy koniecznie pracuje tylko na RDBMS (w przeciwieństwie do Hibernate pod JDO możesz podłączyć wszystko, np. bazy obiektowe albo pliki Excela z tego co wiem).

A tym co najbardziej mi się podoba w implementacji DataNucleus (jedna z implementacji JDO) jest to, że jak mam problem w Hibernate taki że muszę zanurkować w źródła, to tam jest wszystko o wiele bardziej zagmatwane niż w źródłach DataNucleus, gdzie
wiele łatwiej namierza się problemy.

Jeśli chodzi o JPA to też czułem się jak w klatce - mnóstwo rzeczy niedostępnych tych które są w JDO i w Hibernate. JPA to może być dobry wybór jeśli ktoś chce mieć wolność w implementacji, bo JPA jest implementowane i przez Hibernate i przez DataNucleus i można to łatwo podmieniać zapewne.Maciej Węgorkiewicz edytował(a) ten post dnia 24.08.09 o godzinie 19:14
Sebastian Kolski

Sebastian Kolski programista/DBA

Temat: JPA vs Hibernate? Plusy, minusy ?

A ja bym odpowiedź oparł na tym, na jakiej bazie będziemy pracować. O ile implementację JPA zdarzyło mi się zmieniać w jednym z projektów, to bazy jeszcze nigdy. I jeśli baza to Oracle, to TopLink wydaje się naturalnym dopasowaniem.

Dodatkowo, po obejrzeniu http://www.softdevtube.com/2009/08/20/whats-new-and-ex... wydaje mi się, że jeśli byśmy rozważali JPA 1.0 vs Hibernate to wnioski mogły by być inne niż w przypadku JPA 2.0 vs Hibernate
Adam Woźniak

Adam Woźniak software architect
and developer

Temat: JPA vs Hibernate? Plusy, minusy ?

Grzegorz Ligas:
Nie czepiam się, ale dla jasności:

http://java.sun.com/javaee/5/docs/api/javax/persistenc...

http://java.sun.com/javaee/5/docs/api/javax/persistenc...

O, no to w tym się akurat zagalopowałem. Dzięki za cynk.

btw:
Niemniej, o ile pamiętam, w Hibernate jest więcej generatorów oraz są one bardziej konfigurowalne (mają więcej opcji), niż te dostępne na poziomie specyfikacji JPA.

Pozdrowienia, Adam
Adam Woźniak

Adam Woźniak software architect
and developer

Temat: JPA vs Hibernate? Plusy, minusy ?

A odnośnie Java, JPA, ORM, Hibernate, itd., to poddaje rozwadze, oddanie głosu na bug'a:
Access to Field, Method and Constructor without the use of Strings
http://bugs.sun.com/bugdatabase/view_bug.do?bug_id=504...

Bug ma już 85 głosów i jest na 25 pozycji RFE:
http://bugs.sun.com/bugdatabase/top25_rfes.do

Osobiście od dawna mam przekonanie, że wprowadzenie tych rozszerzeń do języka Java w tymże obszarze, może zaowocować nowymi mechanizmami w rozwiązaniach ORM. Generalnie, mam wrażenie, że to rozszerzenie pozwoli w ORMach zmniejszyć ilość przypadków, gdzie zmuszeni jesteśmy używania stringów, jako zapytania HQL lub nazwy parametrów. W końcu nawigacja po kodzie z zapytaniami HQL nie jest doskonała - praktycznie pozostaje jedynie grepowanie, za to jeśli robimy to na poziomie Java, wtedy środowiska IDE świetnie wspierają nas np. w wyszukiwaniu referencji do danej klasy, danej metody, itp.

Aby okrasić to jakimś przykładem, kawałek kodu. Poniżej kawałek użycia Criteria z Hibernate:

Criteria crit = session.createCriteria(Cat.class);
crit.add( Expression.eq( "color", eg.Color.BLACK ) );

Jak widać zmuszeni jesteśmy na używanie stringów ("color"). Po dodaniu rozszerzenia języka Java mogłoby to być zamienione czymś na wzór:
Criteria crit = session.createCriteria(Cat.class);
crit.add( Expression.eq( Cat.color.property, eg.Color.BLACK ) );

W drugim wariancie nie mamy już stringów, a odwołanie do property Cat.color, przez co środowisko IDE jednoznacznie rozpozna, że w tej linii jest "jakieś" odwołanie do Cat.color.

Pozdrawiam, AdamAdam Woźniak edytował(a) ten post dnia 25.08.09 o godzinie 20:07
Marcin Z.

Marcin Z. Senior IT Architect

Temat: JPA vs Hibernate? Plusy, minusy ?

Hej
Aby nie zakładać nowego tematu, zadam pytanie do Was tutaj.
Zajmowaliście się blokowaniem konkretnych rekordów w bazie z wykorzystaniem (N)Hibernate/ JPA, przede wszystkim blokowaniem pesymistycznym np. w Hbm metodą lock, etc. ??Marcin Ziemek edytował(a) ten post dnia 25.08.09 o godzinie 21:53
Adam Woźniak

Adam Woźniak software architect
and developer

Temat: JPA vs Hibernate? Plusy, minusy ?

Marcin Ziemek:
Zajmowaliście się blokowaniem konkretnych rekordów w bazie z wykorzystaniem (N)Hibernate/ JPA, przede wszystkim blokowaniem pesymistycznym np. w Hbm metodą lock, etc. ??

Nie ukrywam, że kiedy dręczą mnie tego typu rozterki, czy funkcjonalność X działa zadowalająco, to, po prostu, piszę kawałek kodu sprawdzający, czy implementacja tegoż działa tak jakbym tego oczekiwał ;]
Jeśli wszystko działa OK - to wtedy dołączam to zaczynam korzystać z tegoż.

Reasumując: drobny teścik i wszystko będzie jasne.

Pozdrowienia, Adam

PS.
Jak wiadomo blokowanie pesymistyczne jest kosztowne.
W swoich systemach staram się używać blokowania optymistycznego. I, jak dotąd, udaje mi się unikać pesymistycznego. Optymistyczne korzystam z poziomu Hibernate (via JPA) i działa, oczywiście, bezbłędnie.
Mariusz Lewandowski

Mariusz Lewandowski Senior Java
Developer

Temat: JPA vs Hibernate? Plusy, minusy ?

Jesli chodzi o Hibernate to ciekawa jest konfiguracja persistence.xml, gdzie mozna skonfigurowac sobie sposob tworzenia bazy danych na podstawie @Entities. Przy kazdym dodatkowym dodanym polu mamy update bazy i nie zaprzatamy sobie glowie aktualizacja tabel.
Na plus z hibernate'a mozna dorzucic cacheowanie polaczen + tworzenie wielu platform bazodanowych np jedna produkcja inna rozwojowa (+ Spring).

konto usunięte

Temat: JPA vs Hibernate? Plusy, minusy ?

Masz na myśli cachowanie połączeń poza kontenerem EJB ?

Moim zdaniem, przy rozważaniach JPA vs Hibernate, bierzmy pod uwagę to, co każdy producent swojej warstwy utrwalania (zgodnej z JPA) dodaje, czyli właściwości niestandardowe, umożliwiające stosowanie ficzerów zaimplementowanych przez danego producenta. W takim przypadku, porównywanie JPA (bo jakie ?) vs Hibernate nie ma sensu. Wtedy należałoby rozważać Hibernate vs Toplink, OpenJPA, Kodo, itd. JPA to tylko specyfikacja.
Mariusz Lewandowski:
Jesli chodzi o Hibernate to ciekawa jest konfiguracja persistence.xml, gdzie mozna skonfigurowac sobie sposob cactworzenia bazy danych na podstawie @Entities. Przy kazdym dodatkowym dodanym polu mamy update bazy i nie zaprzatamy sobie glowie aktualizacja tabel.
Na plus z hibernate'a mozna dorzucic cacheowanie polaczen + tworzenie wielu platform bazodanowych np jedna produkcja inna rozwojowa (+ Spring).
Marcin Z.

Marcin Z. Senior IT Architect

Temat: JPA vs Hibernate? Plusy, minusy ?

Dziękuje za odpowiedź.

Pozdrawiam,
Marcin

Adam Woźniak:
Marcin Ziemek:
Zajmowaliście się blokowaniem konkretnych rekordów w bazie z wykorzystaniem (N)Hibernate/ JPA, przede wszystkim blokowaniem pesymistycznym np. w Hbm metodą lock, etc. ??

Nie ukrywam, że kiedy dręczą mnie tego typu rozterki, czy funkcjonalność X działa zadowalająco, to, po prostu, piszę kawałek kodu sprawdzający, czy implementacja tegoż działa tak jakbym tego oczekiwał ;]
Jeśli wszystko działa OK - to wtedy dołączam to zaczynam korzystać z tegoż.

Reasumując: drobny teścik i wszystko będzie jasne.

Pozdrowienia, Adam

PS.
Jak wiadomo blokowanie pesymistyczne jest kosztowne.
W swoich systemach staram się używać blokowania optymistycznego. I, jak dotąd, udaje mi się unikać pesymistycznego. Optymistyczne korzystam z poziomu Hibernate (via JPA) i działa, oczywiście, bezbłędnie.

konto usunięte

Temat: JPA vs Hibernate? Plusy, minusy ?

Mariusz Lewandowski:
Jesli chodzi o Hibernate to ciekawa jest konfiguracja persistence.xml, gdzie mozna skonfigurowac sobie sposob tworzenia bazy danych na podstawie @Entities. Przy kazdym dodatkowym dodanym polu mamy update bazy i nie zaprzatamy sobie glowie aktualizacja tabel.

Jest to przydatne w fazie produkcji. Niezbyt dobre na dłuższą metę

Z tego co mi wiadomo twórcy hibernate byli włączeni w pracę nad specyfikacją JPA.

Natomiast ja osobiście jestem zdania, że całe to JPA , hibernate itd jest przereklamowane. W Javie mamy przecież odpowiednią specyfikację (JSR243) a ogólniej mówiąc JDO.

zainteresowanych odsyłam do tematów:

http://jdn.pl/node/2126

http://www.mariuszlipinski.pl/2007/04/co-to-jest-jdo-i...

Jak dla mnie JDO ma większą przewagę nad JPA i innymi wynalazkami. Niestety większość nawet nie słyszała o takiej specyfikacji...Łukasz Woźniczka edytował(a) ten post dnia 22.09.12 o godzinie 09:43

konto usunięte

Temat: JPA vs Hibernate? Plusy, minusy ?

Ja polecam korzystanie ze standardu JPA. Sam hibernate jest ok, ale siedząc na JPA łatwo jest zmienić ORM na inny (np EclipseLink).

Nie robi się tego często, ale jak już zajdzie taka potrzeba (np integracja systemu zakupionego od innej firmy), jest to dużo łatwiejsze.

Następna dyskusja:

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




Wyślij zaproszenie do