piątek, 3 października 2014

JPA w Spring

Dla Hibernate głównym interfacem na którym wywołujemy np: metodę getCurrentSession() jest interface Session, dla JPA jest to EntityManager."Odpowiednikiem" Hibernatowego SessionFactory jest EntityManagerFactory. W Springu, są dostępne dwie fabryki dla EntityManager'a:   

  •    LocalContainerEntityManagerFactoryBean
  •    LocalEntityManagerFactoryBean

Czym się różnią ? różnią się bebechami, mianowicie tym jak EntityManager jest tworzony, pierwszy zwraca EntityManagera który jest zarządzany przez kontener aplikacji, drugi zaś - zwraca EntityManagera który jest zarządzany przez aplikacje. Dla nas jednak - to co dzieje się pod spodem, jest totalnie bez znaczenia.

Skonfigurujmy sobie obie fabryki: 

LocalEntityManager:

Czym jest persistenceUnitName ? jest nazwą persistence unit(nie wiem jak to po polsku można przetłumaczyć) który znajduje się w persistence descriptorze(w folderze META-INF), o co chodzi z tym całym plikiem, można dowiedzieć się np: tutaj Jeżeli nie chce nam się bawić w tworzenie descriptora, zainteresuj się czytelniku drugim sposobem pobierania EntityManager'a.

LocalContainerEntityManager

Tutaj, EntityManagerFactory jest tworzony używając informacji zapewnionych przez kontener, w naszym przypadku jest to Spring, dzięki temu wszystkie informacje mogą być zawarte w contexcie aplikacji(application-context.xml).
Oto i nasz LocalContainerEntityManagerFactoryBean: oraz JpaVendorAdapter: Jeżeli Spring zaatakuje Was błędami w stylu: Failed to determine Hibernate PersistenceProvider należy dodać do pom.xml, zależność dla:

Brak komentarzy:

Prześlij komentarz