6

jest połączenie tylko wrócił do puli połączeń w aplikacji JPA jeśli zgłoszęKiedy połączenie jest zwracane do puli połączeń w aplikacji JPA?

entityManager.close(); 

?

Czy połączenie podtrzymujące zmianę uprawnień może nastąpić w trakcie jej cyklu życia?

z góry dzięki mojoo

+2

Znalazłem ten opis strategii zwalniania połączenia z Hibernate: http://docs.jboss.org/hibernate/stable/core.old/reference/en/html/transactions-connection-release.html – GlenPeterson

Odpowiedz

4

WZP specyfikacja nie definiuje takich rzeczy i jej do realizacji zarządzanie połączeniami. Kiedy transakcja jest aktywna, możesz bezpiecznie założyć, że połączenie jest takie samo do momentu zatwierdzenia, z oczywistych powodów. Po zakończeniu txn może zostać przekazany lub może zostać wstrzymany w zależności od implementacji (i nie wspominasz o swojej).

2

To zależy od implementacji i konfiguracji JPA.

Domyślnie w EclipseLink połączenie jest utrzymywane tylko przez czas trwania aktywnej (brudnej) transakcji. tj. od pierwszej modyfikacji lub blokady, aż do zatwierdzenia lub wycofania. W przypadku zapytań nietransakcyjnych połączenie jest pobierane na żądanie i zwracane po wykonaniu zapytania. Pozwala to na maksymalne wykorzystanie puli połączeń. Tak więc normalnie em.close() nie robi nic.

Można to skonfigurować za pomocą właściwości jednostki trwałości "eclipselink.jdbc.exclusive-connection.mode". "Zawsze" będzie utrzymywać połączenie dla życia EntityManager.

Można również użyć różnych pul połączeń dla transakcji w porównaniu z odczytami nietransakcyjnymi. Jest to użyteczne w przypadku JTA, ponieważ do odczytu można użyć źródła danych innego niż JTA.

Powiązane problemy