본문 바로가기

Spring Framework

Jdbc Template

JDBC (Java Database Connectivity)
JDBC는 Java 프로그램에서 데이터베이스와 연결하여 데이터베이스 작업을 수행하기 위한 자바 API입니다. JDBC를 사용하면 Java 애플리케이션과 다양한 데이터베이스 시스템 간에 표준화된 방법으로 상호작용할 수 있습니다. 하지만 JDBC를 사용하는 과정에서 여러 반복적인 코드와 예외 처리 등을 직접 구현해야 하는 불편함이 있었습니다.

JdbcTemplate의 등장
Spring 프레임워크에서는 JDBC를 더 편리하고 유연하게 사용할 수 있도록 JdbcTemplate을 도입하였습니다. JdbcTemplate은 Spring JDBC 모듈에서 제공하는 클래스로서, JDBC를 사용하는 과정에서 발생하는 반복적인 작업들을 대신 처리해주고, 예외 처리와 자원 관리를 편리하게 해줍니다. 이를 통해 개발자는 좀 더 간결하고 효율적인 코드로 데이터베이스와 상호작용할 수 있습니다.

JdbcTemplate이 도입되면서 주요 변경 사항은 다음과 같습니다:

Connection 관리: JdbcTemplate은 데이터베이스 커넥션을 자동으로 생성하고 반환하며, 개발자는 이러한 세부 사항에 직접 신경쓰지 않아도 됩니다.
Statement 생성 및 실행: JdbcTemplate은 SQL 쿼리를 실행하기 위한 PreparedStatement의 생성과 실행을 자동으로 처리해줍니다.
예외 처리: JdbcTemplate은 JDBC 작업 중 발생할 수 있는 예외를 통합적으로 처리하여, 개발자가 각각의 예외를 처리하지 않아도 됩니다.
결과 매핑: JdbcTemplate은 ResultSet에서 데이터를 읽어와 Java 객체로 매핑하는 과정을 단순화하여 제공합니다.
콜백 패턴 활용: JdbcTemplate은 콜백 패턴을 활용하여 데이터베이스 작업의 일부 과정을 개발자가 구현하도록 지원합니다.


 
JdbcTemplate 사용 예시
 

import org.springframework.jdbc.core.JdbcTemplate;
import javax.sql.DataSource;
import java.util.List;

public class UserRepository {
    private final JdbcTemplate jdbcTemplate;

    public UserRepository(DataSource dataSource) {
        this.jdbcTemplate = new JdbcTemplate(dataSource);
    }

    public List<User> getAllUsers() {
        String query = "SELECT * FROM users";
        return jdbcTemplate.query(query, (rs, rowNum) -> {
            User user = new User();
            user.setId(rs.getLong("id"));
            user.setUsername(rs.getString("username"));
            user.setEmail(rs.getString("email"));
            return user;
        });
    }

    // 기타 다른 데이터베이스 관련 작업들...
}


위 예시에서 UserRepository 클래스는 JdbcTemplate을 사용하여 데이터베이스와 상호작용합니다. JdbcTemplate의 query() 메서드를 호출할 때 콜백 함수로 RowMapper를 전달하여 ResultSet의 데이터를 User 객체로 매핑하고, Connection 관리와 예외 처리는 JdbcTemplate이 자동으로 처리해줍니다.

이처럼 JdbcTemplate은 JDBC 작업을 보다 편리하게 처리하도록 도와주며, 개발자가 데이터베이스 상세사항에 집중하지 않아도 될 수 있도록 지원합니다.