Jak wiemy, w hibernacji istnieją dwa konteksty trwałe mianowicie org.hibernate.Session i javax.persistent.EntityManager
ale niektóre metody, które są dostępne w Sesji, nie są dostępne w EntityManager
na przykład
session.delete (byt); jest tam w sesji
ale w EntityManager nie ma usuwania do tego musimy użyć
entityManager.remove (byt); więc którego kontekstu użyć do utrwalenia encji w bazie danych i który jest szybszy między dwoma.
Według mojej wiedzy różnica jest
instancja encji została przekazana do org.hibernate.Metoda usuwania sesji może być w stanie zarządzanym lub odłączonym, natomiast instancja encji przekazana do usunięcia w javax.persistence.EntityManager musi być w stanie zarządzanym.
Odpowiedzi:
2 dla odpowiedzi № 1Nie ma różnicy w wydajności; Hibernacja po prostu udostępnia swoje usługi za pośrednictwem WZP EntityManager
, oprócz natywnego Session
. Jeśli nie zależy ci na kompatybilności JPA (nie widzę żadnego dobrego powodu, dla którego powinieneś), użyj natywnego Session
aby wykorzystać pełny zestaw funkcji Hibernacji.
0 dla odpowiedzi nr 2
Bardzo dobre pytanie
Wiele trwałych interfejsów API ma delegację na org.hibernate API
więc myślę, że lepiej jest używać bezpośrednio org.hibernate API