JDBC는 자바 언어에서 데이터베이스에 접근하기 위한 API이다.
여러 가지 DBMS (예: Oracle, MySQL, PostgreSQL 등)에서 공통적으로 사용할 수 있는 방법을 제공한다.
JDBC를 사용하면, 데이터베이스와 상호 작용하는 자바 코드를 쉽게 작성할 수 있다.
데이터베이스에 대한 연결은 매우 비싼 자원이다. 즉, 연결 생성과 제거에 많은 시간과 자원이 소비된다. Connection Pool은 이런 연결을 재사용함으로써 이런 비용을 줄여주는 기술이다. 필요할 때 연결을 Pool에서 가져오고 사용 후에 다시 Pool로 반환한다.
DataSource는 DB Connection Pool을 만들고 관리하는 역할을 한다.
DataSource는 자신이 관리하는 Connection Pool에서 Connection을 얻어오거나 반환하는 API를 제공한다.
HikariCP는 자바 언어를 위한 고성능 Connection Pool 라이브러리이다.
이 라이브러리는 대기 시간 최적화와 성능 향상을 중점으로 설계되었다.
JDBC Template은 Spring Framework에서 제공하는 기능 중 하나이며, JDBC API를 감싸고 있는 래퍼(Wrapper)로, JDBC API를 보다 편리하게 사용할 수 있도록 도와준다.
JDBC를 좀 더 간결하고 편리하게 사용할 수 있는 방법을 제공하며 Exception 처리, Connection 관리, SQL 실행 등을 내부적으로 처리해주어 개발자가 비즈니스 로직 구현에 집중할 수 있게 한다.
JDBC Template은 직접 SQL 쿼리를 작성하고 실행해야 하므로 ORM과는 구별된다.
이러한 기술과 라이브러리들은 일반적으로 아래와 같이 연결되어 사용된다.
프로그램이 데이터베이스에 접근하려면, 먼저 DataSource로부터 Connection을 얻는다.
이 Connection은 사실 DataSource가 관리하는 Connection Pool에서 가져온 것이다.
이렇게 얻어진 Connection을 JDBC API를 통해 사용한다.
JDBC를 직접 사용하는 대신 JDBC Template을 이용하면 좀 더 편리하게 데이터베이스와 상호작용할 수 있다.
사용이 끝난 Connection은 다시 Connection Pool로 반환된다.
이런 과정을 통해 Connection의 생성과 소멸에 따른 비용을 크게 줄일 수 있다.
Connection Pool은 일반적으로 HikariCP와 같은 라이브러리를 통해 구현된다.
HikariCP는 Connection Pool의 성능을 최적화하고, 많은 양의 데이터베이스 작업을 빠르게 처리할 수 있도록 도와준다.
JDBC Template을 사용하는 이유?
JDBC API를 직접 사용할 수 있는데, 왜 더 편리한 방법인 JDBC Template을 사용하는 것인지?
번거로운 예외 처리
JDBC API를 직접 사용할 때는 SQLException과 같은 예외 처리를 직접 해주어야 한다. 그러나 JDBC Template은 예외 처리를 내부적으로 처리해준다. 이는 개발자가 예외 처리에 신경 쓰지 않고 비즈니스 로직에 집중할 수 있도록 도와준다.
반복적인 작업 자동화
JDBC API를 사용하면 Connection을 열고 닫는 등의 반복적인 작업을 수동으로 처리해야 한다. JDBC Template은 이러한 반복적인 작업을 자동화하여 개발자의 부담을 줄여준다.
예를 들어, Connection 생성 및 반환, Statement/PreparedStatement 생성과 닫기, ResultSet 처리 등의 작업을 내부적으로 처리한다.
코드의 가독성과 유지보수성
JDBC API를 직접 사용하면 일련의 코드가 반복되는 경향이 있다. JDBC Template을 사용하면 이러한 반복적인 코드를 추상화하여 간결하고 가독성이 높은 코드를 작성할 수 있다.
또한, JDBC Template은 코드의 유지보수성을 향상시키기 위해 일관된 인터페이스를 제공한다.
트랜잭션 관리
JDBC Template은 트랜잭션 관리를 지원한다. 트랜잭션을 시작하고 커밋 또는 롤백하는 등의 작업을 간편하게 처리할 수 있다. 이는 데이터베이스 작업의 일관성과 안전성을 보장하는 데 도움이 된다.
JDBC Template은 Spring Framework에서 제공하는 기능 중 하나이며, Spring의 핵심 컴포넌트 중 하나로 자리잡고 있다. Spring은 개발자에게 편리한 방식으로 데이터베이스와 상호 작용할 수 있는 다양한 기능을 제공하며, JDBC Template은 그 중의 하나이다.