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 № 1Jeś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
- Hibernacja EntityManager
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ć).