2012-07-03 97 views
5

如何檢查數據庫JPA,連接或沒有時,數據庫連接是開啓還是關閉部署後的應用程序,即(在運行的應用程序)檢查數據庫在JPA

回答

1

一般來說,所有的JPA實現使用一些連接池或池化數據源(如C3P0)和這些連接池have a configuration,它們在獲取連接之前測試數據庫連接。請檢查您的連接池/數據源文檔以獲取此設置。

+0

在我的應用程序的數據庫連接被切斷,給它沒有任何行動請求之後,或者是空白的,並沒有異常顯示在我的日誌 –

+0

您的意思是打開和關閉,每次查詢連接你火到數據庫? – Santosh

+0

在我的應用程序中,每個操作都依賴於數據庫。所以它應該檢查正確運行應用程序的連接。 –

4

最簡單的方法是執行一個查詢,如

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

通常情況下,數據源/連接池或JPA提供商將提供某種形式的連接測試或死連接分辨率。

如果您正在使用的EclipseLink的連接池將自動檢測死連接,然後重試查詢。

+1

這很好,但不適用於所有數據庫類型。例如,不適用於PostgreSQL。我爲postgresql使用「select 1」。我想知道是否有統一的方法可以用於所有數據庫 – Ievgen