DBCP 풀을 사용하고 testOnBorrow 및 testOnReturn 을 사용 하여 연결이 여전히 유효한지 테스트 하고 싶습니다 .
불행히도 나는 그것이 작동하도록 속성 validationQuery를 설정해야합니다.
질문 : validationQuery에는 어떤 값이 있어야합니까?
저도 알아요 : validationQuery는 적어도 하나의 행을 반환하는 SQL SELECT 문이어야합니다.
문제는 다양한 데이터베이스 (DB2, Oracle, hsqldb)를 사용한다는 것입니다.
답변
모든 데이터베이스에 대해 하나의 validationQuery 만있는 것은 아닙니다. 각 데이터베이스에서 서로 다른 validationQuery를 사용해야합니다.
몇 시간 동안 인터넷 검색 및 테스트를 수행 한 후이 테이블을 수집했습니다.
데이터베이스 유효성 검사 쿼리 노트
- HSQLDB –
select 1 from INFORMATION_SCHEMA.SYSTEM_USERS
- 오라클 –
select 1 from dual
- DB2 –
select 1 from sysibm.sysdummy1
- mysql을 –
select 1
- 마이크로 소프트 SQL 서버 –
select 1
(SQL-서버 9.0, 테스트 10.5 [2008]) - PostgreSQL을 –
select 1
- 앵그르 –
select 1
- 더비 –
values 1
- H2 –
select 1
- 파이어 버드 –
select 1 from rdb$database
다양한 데이터베이스에 대한 블로그 유효성 검사 쿼리 에 이에 대해 썼습니다 .
미리 JDBC 드라이버에 따라 validationQuery를 반환하는 클래스의 예가 있습니다.
아니면 누구에게 더 나은 솔루션이 있습니까?
답변
Connector / J 드라이버가있는 MySQL의 경우 서버에 ping을 보내고 더미 결과 집합을 반환하는 간단한 유효성 검사 쿼리가 있습니다. 유효성 검사 쿼리는 정확히 다음 문자열 일 수 있습니다 (또는 시작해야 함).
/* ping */
자세한 내용 은 MySQL 드라이버 설명서의 연결 확인을 참조하십시오.
답변
Informix의 경우 유효성 검사 쿼리는 systables에서 1을 선택합니다.