풀은 저장된 순서대로 커넥션을 내보냅니다
겉으로는 빈 슬롯이 있어 보여도, 실제로는 이미 끊어진 연결이 섞여 있을 수 있습니다.
네트워크 단절이나 DB 재시작 뒤에는 풀 안에 끊어진 연결이 섞여 남을 수 있습니다. 그래서 커넥션을 빌려주기 전에 한 번 확인해, 실패가 애플리케이션 로직까지 번지지 않게 막습니다.
겉으로는 빈 슬롯이 있어 보여도, 실제로는 이미 끊어진 연결이 섞여 있을 수 있습니다.
isValid() 같은 검사로 응답 가능한 연결만 통과시킵니다.
첫 SQL 실행 시점에야 문제가 드러나고, 요청 하나가 예외나 재시도로 번집니다.
끊어진 커넥션은 제거하고, 정상 연결이나 새 연결을 준비해 반환합니다.
사용자는 느린 응답, 첫 쿼리 실패, 불필요한 예외 로그를 보게 됩니다.
애플리케이션 로직은 이미 검증된 연결만 받으므로, 복구가 더 예측 가능해집니다.
죽은 커넥션이 풀 안에 숨어 있다가 실제 트래픽에서 터집니다.
유효성 검사는 장애 이후의 잔여 상태를 정리해, 풀의 일관성을 다시 맞추는 역할을 합니다.