안녕하세요 모두 나는 그것이 오래된 질문이지만 그냥 궁금해서 오늘날 알고 있었다. 우리는 connection.close가 preparedStatement를 닫을 것이라는 것을 안다. (내가 잘못하면 나를 바로 잡는다.) 하지만 연결이 닫히면 close 준비 스테이먼트JDBC 연결 가까이 PreparedStatement의 가까운
conn.close();
ps.close();
nullpointer 예외가 발생합니까? 누군가가 말했듯이
는 conn.close 전에 앞서 먼저 가까운 실행 자신의 작업을 완료하고 그래서 당신은 늘 nullpointer를 얻을 것이다 JVM의 speed.sometimes의 ps.close()에 따라 달라집니다. 그 테스트하기 위해
, 나는 코드
conn.close();
Thread.sleep(5000);//I give 5s to conn.close to finish his work. should be enough
ps.close();
를 수정하지만 난 nullpointer을하지 않았다.
그래서 제 질문은 내가 CONN 먼저 다음 PS를 닫으면 여기에 무슨 일이 있었는지입니다.
감사합니다.
JDBC 스펙은 이것에 대해 매우 분명하다 : 연결을 닫는 것은 적어도 사용자의 관점에서 (모든 종속 오브젝트를 종료하며 수영장 내부에 열려 수있는 문을 풀링의 경우,하지만 그 진술에 사용자가-처리에해야 마치 마치 닫힌 것처럼 행동). 이미 닫힌 JDBC 자원 (연결, 명령문, 결과 집합 등)을 닫으면 아무런 효과가 없습니다 (오류가없는 등). –
나는 풀러에 의해 반환 된 장식 된 연결에 대해 이야기하고 있었고 그러한 장식 된 연결에 대한 긴밀한 호출은 기본 물리적 연결을 닫지 않습니다. 우리가 그 점에 동의합니까? 이제 풀러는이 연결에 해당하는 명령문/결과 집합을 확인하고 연결의 닫기 호출에서 닫을 수 있습니까? 내가 네가 맞기를 바란다. – Vikdor