(W4D2) JDBC

JDBC

자바 애플리케이션이 데이터베이스와 연결할 수 있도록 한다.

표준 인터페이스 - DBMS의 종류에 상관없이 SQL문을 실행시키고 처리할 수 있다.

JDBC DB Driver : DBMS 벤더사에서 개발하고 배포함

JDBC API를 이용해서 Driver와 커넥션을 맺고 쿼리에 대한 요청을 하게 한다.

JDBC Flow

  • DriverManager를 통해서 커넥션 객체를 받아온다.
  • Connection을 통해서 Statement를 가져온다.
  • Statement를 통해서 쿼리를 실행시켜서 ResultSet을 가져오거나 Update를 실행한다.
  • 데이터베이스 커넥션을 종료한다.

Statement vs PrepareStatement

  • Statement : 매번 쿼리가 수행할 때마다 쿼리의 문장을 분석하고 컴파일, 실행 이렇게 세 단계의 실행 단계를 거치게 된다.
  • PrepareStatement : 처음 한 번만 세 단계를 거치고 캐시에 담겨서 재사용된다. 처음에 만들어진 쿼리가 고정된다. 쿼리를 중간에 바꿀 수 없고(다이나믹 쿼리 불가능) 매번 실행 단계를 거치지 않아 성능이 좋다.

=> 캐시 사용 여부가 가장 큰 차이점이다.

Try with resources

try-catch-finally

  • connection 객체를 생성하고 finally 블록에서 close() 해야한다.
  • null 체크, close에 대한 Exception 처리까지 해야했다.

try-with-resources

  • try( )에서 선언된 객체들에 대해서 try가 종료될 때 자동으로 자원을 해제한다. try 구문이 종료될 때 객체의 close() 메소드를 호출해준다. -> finally에 명시적으로 close()를 할 필요가 없다.
  • AutoCloseable 인터페이스를 구현한 객체만 close()가 호출된다.

Written by@Myunghwan
Nothing changes if nothing changes

GitHub