2013-10-06 13 views
12

Zaczynam nowy projekt internetowy i wybrałem JPA jako mój silnik ORM trwałości.Hibernate vs EclipseLink

Mimo że korzystałem z OpenJPA w moim ostatnim projekcie, teraz chcę użyć EclipseLink.

Dlaczego? Jest to implementacja referencyjna JPA, ma dużo dokumentacji i bardzo dobre wsparcie w środowisku Eclipse IDE. Nie mogę też znaleźć żadnego benchmarku, który deklaruje, że żaden z nich nie jest najlepszy, więc wydajność nie jest czynnikiem (wszystkie implementacje mają własne punkty wytrzymałości).

Ale chcę używać specyfikacji sprawdzania poprawności JSR-303, a wybrałem opcję sprawdzania ważności hibernacji (jest to referencyjna implementacja specyfikacji sprawdzania poprawności fasoli).

Co więcej, używam Springa i jest wiele przykładów z Spring + Hibernate, ale nie znalazłem żadnej opinii, która mówi, że Spring jest lepsza z Hibernate.

Czy jest problem z miksowaniem tych dwóch implementacji? Czy lepiej użyć Hibernate JPA z weryfikacją Hibernate Bean?

+2

Nigdy nie próbowałem go w połączeniu ze sprężyną - ale sprawdzanie hibernacji fasoli i EclipseLink są używane w Glassfish .... więc użyteczność jest udowodniona. Ja też * wolę * EclipseLink do Hibernate, ponieważ automatycznie obsługuje on rozszerzoną otwartą sesję dla leniwego ładowania. – cljk

+0

Wszystkie implementacje JPA 2 (jeśli są zgodne) zezwalają na użycie dowolnej implementacji sprawdzania poprawności fasoli. A jeśli coś jest "implementacją referencyjną", oznacza to, że zostało użyte jako dowód na to, że specyfikacja JPA jest możliwa do zastosowania ... * nic więcej *. – DataNucleus

+0

Możliwy duplikat [Hibernate lub EclipseLink dla JPA?] (Http://stackoverflow.com/questions/3234829/hibernate-or-eclipselink-for-jpa) – Dinei

Odpowiedz

9

Używam implementacji WZP ze Źródłem i Hibernate-validation-4.2.0.Final. I jak dotąd nie ma problemu. Teraz, aby odpowiedzieć na twoje pytanie:

Czy jest problem z miksowaniem tych dwóch implementacji?

Nie sądzę, nie będzie żadnego problemu przy użyciu EclipseLink wdrażanie WZP z Hibernate wdrożenia dla JSR-303 walidacji specyfikacji razem, jako że celem tych dwóch specyfikacji są różne:

  • JSR 303 - Bean Validation - definiuje model metadanych i API do walidacji jednostek. Nie jest to powiązane z konkretną warstwą aplikacji lub modelem programowania.
  • JPA - Jest to specyfikacja Java API do zarządzania utrwalaniem i mapowaniem obiektów/relacji za pomocą Java EE i Java SE.

Spring zapewnia pełną obsługę interfejsu JSR-303 Bean Validation API. Trzeba tylko mieć dostawcę JSR-303, takiego jak Hibernate Validator, który znajduje się w ścieżce klas i zostanie automatycznie wykryty.

Wiosną JPA, dostępna pod pakietem org.springframework.orm.jpa, oferuje kompleksową obsługę Java Persistence API w podobny sposób jak w przypadku integracji z Hibernate.