실제로 DB에 접근하는 객체
커넥션 풀링 지원
(커넥션 풀링 : 미리 정해진 갯수만큼의 DB 커넥션을 풀에 준비해두고, 어플리케이션이 요청할 때마다 풀에서 꺼내서 하나씩 할당해주고 다시 돌려받아서 풀에 넣는 식 기법)
모든 자바의 데이터 액세스 기술의 근간
엔티티 클래스와 어노테이션을 이용하는 최신 ORM 기술도 내부적으로는 DB와의 연동을 위해 JDBC를 이용
장점 | 단점 |
---|---|
안정적이고 유연 | DB에 따라 일관성 없는 정보로 Checked Exception 처리 |
친숙해 별도 학습없이 개발 가능 | Connection과 같은 공유 리소스를 제대로 릴리즈(반환) 해주지 않으며 시스템 자원 바닥나는 버그 발생 가능 |
JDBC의 장점과 단순성을 그대로 유지하면서 기존 JDBC의 단점을 극복
JDBC API에서 지원되지 않는 편리한 기능을 제공
간결한 형태의 API 사용법을 제공
동작 | 설명 |
---|---|
Connection 열기와 닫기 | Connection과 관련된 모든 작업을 Spring JDBC가 필요한 시점에서 알아서 해준다. |
진행 중에 예외가 발생했을 때도 열린 모든 Connection 객체를 닫아준다. | |
Statement 준비와 닫기 | SQL이 담긴 Statement를 실행하는 것도 Spring JDBC가 해준다. |
Statement의 실행 결과는 다양한 형태로 가져올 수 있다. | |
Statement 실행 | SQL이 담긴 Statement를 실행하는 것도 Spring JDBC가 해준다. |
Statement의 실행 결과는 다양한 형태로 가져올 수 있다. | |
ResultSet Loop 처리 | ResultSet에 담긴 쿼리 실행 결과가 한 건 이상이면 ResultSet 루프를 만들어서 반복해주는 것도 Spring JDBC가 해준다. |
Exception 처리와 반환 | JDBC 작업 중 발생하는 모든 예외는 Spring JDBC 예외 변환기가 처리한다. |
Checked Exception인 SQLException을 Runtime Exception인 DataAccessException 타입으로 변환해준다. | |
Transaction 처리(Commit, Rollback 등의 작업 단위) | Spring JDBC를 사용하면 transaction과 관련된 모든 작업에 대해서 신경쓰지 않아도 된다. |
JDBC의 모든 기능을 최대한 활용할 수 있는 유연성을 제공하는 클래스