2012-07-03 18 views
5

Jak sprawdzić bazę danych jest podłączony lub nie w JPA, gdy połączenie z bazą danych jest włączone czy wyłączone po wdrożeniu aplikacji tj (podczas uruchamiania aplikacji)Sprawdź bazę danych w JPA

Odpowiedz

1

Generalnie wszystko wdrażanie WZP użyć trochę Bilard lub Zbiorcze źródło danych (takie jak C3P0) i te pule połączeń have a configuration, które testują łączność z bazą danych przed uzyskaniem połączenia. Sprawdź konfigurację Pool Pool/Datasource dla tego ustawienia.

+0

W mojej aplikacji połączenie z bazą danych jest odcięte, po udzieleniu dowolnego żądania nie ma akcji lub jest puste i żaden wyjątek nie jest wyświetlany w moim logu –

+0

Masz na myśli, że otwierasz i zamykasz połączenie dla każdego zapytania wysyłanego do bazy danych? – Santosh

+0

W mojej aplikacji każde działanie zależy od DB. Powinien więc sprawdzić poprawność połączenia pod kątem prawidłowego działania aplikacji. –

4

Najprostszym sposobem jest wykonanie kwerendy, takie jak

em.createNativeQuery("select 1 from dual").getSingleResult(); 

Normalnie DataSource/puli połączeń lub dostawcą JPA zapewni jakąś testowania połączenia lub uchwały martwego połączenia.

Jeśli korzystasz z łączenia połączeń EclipseLink, automatycznie wykryje on martwe połączenia i ponawia próby wysłania zapytania.

+1

To jest dobre, ale nie działa dla wszystkich typów baz danych. Nie działa na przykład dla PostgreSQL. Używam "wybierz 1" dla postgresql. Zastanawiam się, czy istnieje jakiś ujednolicony sposób, który działałby dla wszystkich baz danych – Ievgen