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 작업을 보다 편리하게 처리하도록 도와주며, 개발자가 데이터베이스 상세사항에 집중하지 않아도 될 수 있도록 지원합니다.
'Spring Framework' 카테고리의 다른 글
Spring legacy Project(feat. Maven) 생성 (0) | 2024.04.09 |
---|---|
서비스 추상화와 트랜잭션 (0) | 2024.04.08 |
템플릿 메서드 패턴 & 콜백 패턴 (0) | 2024.04.08 |
junit5 - 단위 테스트 프레임워크 (0) | 2024.04.08 |
싱글톤 레지스트리 (0) | 2024.04.08 |