/ / jaki jest cel dwóch plików konfiguracyjnych dla Hibernate? - java, hibernate, maven-2

jaki jest cel dwóch plików konfiguracyjnych dla Hibernate? - Java, hibernacja, maven-2

To jest moja obecna struktura projektu:

pom.xml
/src
/main
/resources
hibernate.cfg.xml
/META-INF
persistence.xml

Mam bardzo podobne parametry konfiguracyjne w obu plikach (hibernate.cfg.xml i persistence.xml), co wygląda dziwnie, ale to właśnie widziałem w wielu przykładach i samouczkach online. Nie mogę zrozumieć, dlaczego muszę mieć dwa pliki. Czy można pracować tylko z jednym? Proszę wyjaśnić.

ps. Na przykład powinienem zadeklarować hibernate.dialect w obu plikach, czy tylko jeden wystarczy? Jeśli tak, to z którego?

Odpowiedzi:

58 dla odpowiedzi № 1

Jeśli używasz zastrzeżonego API Hibernate, będziesz potrzebować hibernate.cfg.xml. Jeśli używasz JPA tj. Hibernate EntityManager, będziesz potrzebował persistence.xml.

Więc zazwyczaj nie potrzebujesz obu, gdy używasz zarówno Własne API Hibernate lub JPA.

Jeśli jednak korzystałem Hibernate Proprietary API i już masz hibernate.cfg.xml (i hbm.xml Pliki mapowania XML), ale chcąc rozpocząć korzystanie z JPA, można ponownie wykorzystać istniejące pliki konfiguracyjne, odwołując się do hibernate.cfg.xml w persistence.xml w hibernate.ejb.cfgfile właściwość - a zatem mają oba pliki. Ponowne użycie istniejącego hbm.xml pliki to realistyczny scenariusz IMO, który może usprawiedliwiać utrzymywanie obu (nawet jeśli prawdopodobnie „zmigruję do adnotacji JPA na dłuższą metę”).

Referencje


15 dla odpowiedzi nr 2

hibernate.cfg.xml jest przeznaczony do hibernacji; persistence.xml jest dla JPA.

Jeśli wykonasz Hibernację bez JPA, nie potrzebujesz tego drugiego.

Jeśli robisz JPA, musisz mieć implementację dostawcy, co oznacza Hibernate, EclipseLink itp. (Mogą istnieć inne legalne implementacje JPA, ale nie mam czasu, aby to sprawdzić).