프로그래밍/JAVA Spring

[Spring 스프링] JDBC, JDBC 드라이버, JDBCTemplate

hectick 2023. 4. 14. 15:52

 

용어들이 다 비슷하게 생겨서 헷갈렸는데, 이참에 한번 정리해보았다.

 

 

JDBC

 

JDBC(Java Database Connectivity)는 자바에서 데이터베이스에 연결할 때 사용하는 API이다.

 

일반적으로 데이터베이스에서 데이터를 가져오는 과정은 다음과 같이 이루어진다.

1. 데이터베이스로 커넥션 연결

2. 데이터베이스에 SQL 전달

3. 데이터베이스가 결과를 응답 

 

하지만 데이터베이스의 종류는 MySQL DB, Oracle DB 등 매우 많다.

큰 과정은 동일할지라도 각각 사용법이 다르다.

데이터베이스를 변경할 때마다 애플리케이션의 데이터베이스 접근 코드도 변경해야한다고 생각해보자.

너무 끔찍하다.

 

그래서 JDBC는 위 3가지 공통적인 기능을 표준 인터페이스로 정의해서 제공한다.

java.sql.Connection
java.sql.Statement
java.sql.ResultSet

 

위 인터페이스들을 활용한다면, 개발자들은 데이터베이스를 변경할 때 프로그램에 작성되어 있는 데이터베이스 사용 코드를 변경할 필요가 없게 된다.

JDBC API의 사용법만 알아두기만 한다면 서로 다른 종류의 데이터베이스를 사용할 때도 동일하게 코드를 작성할 수 있다는 뜻이다. 

 

하지만 기능이 동작하려면 인터페이스를 구현한 구현체가 필요하다.

그래서 각각의 데이터베이스에 맞게 위에 있는 인터페이스들을 구현한 라이브러리가 존재한다.

그것이 JDBC 드라이버이다. 

 

 

JDBC 드라이버

 

앞서 말했듯이 JDBC API를 구현한 라이브러리이다.

MySQL JDBC 드라이버, Oracle JDBC 드라이버 등 종류가 다양하다.

 

개발자는 이 중에 자신이 쓸 데이터베이스에 대한 JDBC 드라이버를 갖다 쓰면 된다.

그리고 기존의 데이터베이스를 다른 데이터베이스로 교체할 때, JDBC 드라이버만 변경해주면 된다.

 

하지만 각각의 데이터베이스마다 SQL이나 데이터 타입 등 사용법이 다른 경우가 존재하기도 한다.

이럴 때는 데이터베이스를 변경할 때 SQL도 해당 데이터베이스에 맞게 변경해줘야 한다는 한계점이 존재한다.

 

 

JDBCTemplate

 

JDBC 를 편하게 사용할 수 있도록 스프링이 제공하는 기술중 하나이다.

데이터베이스 연결, 쿼리 실행, 예외처리 등 번거로운 일들을 자동으로 해준다.

따라서 JDBCTemplate를 사용하면 개발자는 쿼리를 작성하는 것과 쿼리의 결과에만 집중할 수 있게 된다.

 

JDBCTemplate을 이용해 데이터베이스에 데이터를 삽입하는 코드를 한번 예시로 가져와봤다.

JDBCTemplate의 update 메서드에 insert 쿼리문과 삽입할 데이터들만 넣어주고 있다.

	this.jdbcTemplate.update(
        	"insert into t_actor (first_name, last_name) values (?, ?)",
        	"Leonor", "Watling");

 

이 얼마나 간단한가?

 

개발자는 Connection을 직접 생성하지 않아도 되고, Statement를 만들어 쿼리를 실행하지 않아도 된다.

예외처리하는 코드도 별도로 작성할 필요가 없다.

JDBCTemplate이 알아서 예외처리를 해주고, 예외를 변환해주기도 하기 때문이다.

 

그러니까 JDBCTemplate를 잘~ 활용해보도록 하자!!