2009-02-23 11 views
33

zrobiłem stosowanie następujących implementacje WZP:Implementacje JPA - Który z nich jest najlepszy w użyciu?

  1. Hibernate,
  2. Toplink,
  3. OpenJPA

Każdy z nich ma swoje mocne i słabe strony. Znalazłem Hibernate najbardziej zaawansowaną z trzech, poza tym, że połączyło niektóre własne ulepszenia z JPA, co utrudniło przejście do innych dostawców. Co najważniejsze, jego analizator zapytań był znacznie łagodniejszy przy interpretowaniu JPA. Ułatwiają one uzyskanie odpowiednich bibliotek do obsługi hibernacji, ponieważ uważam, że jest to misja próbująca uzyskać odpowiednie wersje wszystkich zależności.

Toplink był w porządku, ale pozostało mu uczucie, że jest lekko okaleczony, ponieważ wygląda na to, że Oracle chce używać/kupować? ich bardziej zaawansowana biblioteka. Próba pobrania go była również misją, ponieważ trzeba ją zainstalować, uruchamiając plik jar. Zauważyłem, że zaimplementował tylko bazową specyfikację JPA. Powodem, dla którego go użyłem był hibernate używa wielu bibliotek, które są powszechnie używane w innych projektach open source, które często bywają problemy z klasą, szczególnie gdy używa się JBoss

OpenJPA - To jest zdecydowanie najlepsza dokumentacja i jest łatwe do pobrać i używać, ale wydaje się, że jest bardzo błędny. Może to tylko mój kod, ale znalazłem bardziej zaawansowane zastosowanie, takie jak OneToMany relacje z CascadeType.all ustawione po prostu nie działa. Wprawdzie może to być mój kod, który był błędny i nie miałem czasu przetestować czystego przypadku, ale wiele takich incydentów sprawia, że ​​boję się go użyć. Naprawdę mam nadzieję, że będzie lepiej. Komunikaty o błędach są często bezużyteczne w rozwiązywaniu problemu.

Z jakich innych bibliotek korzystają ludzie i które wolą i dlaczego?

Odpowiedz

17

Miałem takie same wnioski dotyczące tych implementacji.

  1. OpenJPA było/wydawało buggy

  2. Hibernate miał mnóstwo bibliotek i wydawało się, że problemy z nie leniwego ładowania wszystkiego.

  3. Toplink zakończył się moim wyborem. Nie był tak elastyczny, jak mógłby być Hibernate, ale działa i nie muszę instalować commons-logging.

Ten, który chciałbym wypróbować to JPOX, którego nazwa została ostatnio zmieniona na datanucleus.

+8

EclipseLink jest (imho) lepszy od wszystkich tych. – cletus

+2

co z obiektem objectdb? www.objectdb.com – user3111525

+1

lub EBean! http://www.avaje.org/ –

6

Osobiście nie uważam, że OpenJPA jest wystarczająco dojrzała. Istnieją inne biblioteki open source, które są bardziej dojrzałe i wolałbym je używać. Są to te, które rozważam w celu:

  1. Hibernate. Hibernate działa już od dłuższego czasu i naprawdę utorował drogę ORMowi w Javie. Jedyny problem jaki mam z Hibernate to licencjonowanie. To licencja LGPL może spowodować, że niektóre firmy komercyjne będą się skręcać (z powodów, których nie będę tu omawiać). W każdym razie, jeśli LGPL jest dla ciebie problemem, prawdopodobnie dobrze jest wyjaśnić.

  2. EclipseLink. Niektóre tła na eclipselink.Toplink Essentials to darmowa wersja Oracle implementacji JPA. EclipseLink został zaczerpnięty z Toplink, pełnej implementacji WZP Oracle. EclipseLink będzie dostawcą JPA 2.0 dla Glassfish v3.0, więc wygląda na to, że wszystko odsuwa się od Toplink Essentials i EclipseLink. Mimo że wersja EclipseLink ma tylko wersję 1.0.2, produkt ten istnieje od dawna pod innymi nazwami.

Projekt, nad którym pracuję, jest teraz w serwisie Toplink Essentials, ale wkrótce planujemy przejść na Eclipselink. Hibernacja nie była dostępna w przypadku problemów licencyjnych, o których wspomniałem wcześniej.

+0

help please http://stackoverflow.com/questions/32252715/java-the-following-listed-types-were-not-enhanced-at-build-time-or- ładunek w klasie –

4

OpenJPA jest znana jako Kodo, co BEA kupił dość dawno temu. Kodo było implementacją JDO, a obecnie JPA. Ponadto intensywnie korzystamy z OpenJPA. Tak więc nie powiem, że nie jest dojrzały. W porządku Sugeruję jednak użycie Hibernate, a mianowicie wrapperów JPA wokół Hibernate.

Powód? 1) JPA jest bardzo, bardzo podobny do Hibernate 2) Wiele stanowisk ma wymagania Hibernacji. Lepiej pochylić się do głównych produktów ... w zasadzie

Powiązane problemy