2012-07-03 30 views
5

Cách kiểm tra cơ sở dữ liệu được kết nối hay không trong JPA, khi kết nối cơ sở dữ liệu bật hoặc tắt sau khi ứng dụng được triển khai tức là (Trong khi đang chạy ứng dụng)Kiểm tra cơ sở dữ liệu Trong JPA

Trả lời

1

Thông thường tất cả việc triển khai JPA sử dụng một số Hồ bơi kết nối hoặc Poolas Datasource (giống như C3P0) và các kết nối này được xem là have a configuration để kiểm tra kết nối cơ sở dữ liệu trước khi có được kết nối. Vui lòng kiểm tra hồ sơ kết nối/tài liệu nguồn dữ liệu của bạn cho cài đặt này.

+0

Trong kết nối cơ sở dữ liệu ứng dụng của tôi bị cắt, sau khi đưa ra bất kỳ yêu cầu nào nó không có hành động hoặc nó trống và không có ngoại lệ nào được hiển thị trong nhật ký của tôi –

+0

Bạn có nghĩa là bạn đang mở và đóng kết nối cho mọi truy vấn bạn bắn vào cơ sở dữ liệu? – Santosh

+0

Trong ứng dụng của tôi, mọi hành động đều phụ thuộc vào DB. Vì vậy, nó nên kiểm tra kết nối để chạy ứng dụng một cách chính xác. –

4

Cách đơn giản nhất là để thực hiện một truy vấn, chẳng hạn như

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

thường DataSource/kết nối hồ bơi hoặc nhà cung cấp JPA sẽ cung cấp một số loại thử nghiệm kết nối hoặc độ phân giải kết nối chết.

Nếu bạn đang sử dụng kết nối của EclipseLink, nó sẽ tự động phát hiện các kết nối đã chết và thử lại các truy vấn.

+1

Điều này là tốt, nhưng không hoạt động đối với tất cả các loại cơ sở dữ liệu. Không hoạt động cho PostgreSQL chẳng hạn. Tôi đang sử dụng "chọn 1" cho postgresql. Tôi tự hỏi nếu có một số cách thống nhất mà sẽ làm việc cho tất cả các cơ sở dữ liệu – Ievgen

Các vấn đề liên quan