Java에서 데이터베이스에 접근할 때, JdbcTemplate을 사용하면 간편하게 데이터베이스 연동 작업을 처리할 수 있습니다. 이번 글에서는 JdbcTemplate을 활용한 기본적인 사용법을 소개합니다.
JdbcTemplate이란?
JdbcTemplate은 Spring Framework에서 제공하는 유틸리티 클래스입니다. 이 클래스는 데이터베이스에 접근하기 위해 JDBC API를 간소화하여 예외 처리 및 리소스 관리를 자동으로 처리해 줍니다. 이를 통해 개발자는 SQL 쿼리 실행, 데이터 매핑 등을 훨씬 간편하게 할 수 있습니다.
1. 의존성 추가
먼저, Spring 프로젝트에 JdbcTemplate을 사용하려면 의존성을 추가해야 합니다. Maven을 사용하는 경우 pom.xml 파일에 다음과 같은 의존성을 추가합니다:
<dependency> <groupId>org.springframework</groupId> <artifactId>spring-jdbc</artifactId> <version>5.3.9</version> </dependency>
2. DataSource 설정
JdbcTemplate을 사용하려면 먼저 DataSource를 설정해야 합니다. DataSource는 데이터베이스 연결 정보를 포함하고 있습니다. 아래는 Spring에서 DataSource를 설정하는 예시입니다.
@Configuration public class DatabaseConfig { @Bean public DataSource dataSource() { BasicDataSource dataSource = new BasicDataSource(); dataSource.setDriverClassName("com.mysql.cj.jdbc.Driver"); dataSource.setUrl("jdbc:mysql://localhost:3306/mydb"); dataSource.setUsername("username"); dataSource.setPassword("password"); return dataSource; } }
3. JdbcTemplate 빈 등록
JdbcTemplate은 DataSource를 사용하여 생성됩니다. DataSource가 준비되면 JdbcTemplate 빈을 등록합니다. 아래는 JdbcTemplate 빈을 등록하는 방법입니다:
@Configuration public class AppConfig { @Autowired private DataSource dataSource; @Bean public JdbcTemplate jdbcTemplate() { return new JdbcTemplate(dataSource); } }
4. SQL 쿼리 실행
JdbcTemplate을 사용하면 SQL 쿼리를 간단하게 실행할 수 있습니다. 가장 기본적인 예로 데이터를 조회하는 방법을 소개합니다.
@Autowired private JdbcTemplate jdbcTemplate; public List<User> getUsers() { String sql = "SELECT * FROM users"; return jdbcTemplate.query(sql, new BeanPropertyRowMapper<User>(User.class)); }
5. 데이터 삽입
데이터를 삽입하려면 update 메서드를 사용합니다. INSERT, UPDATE, DELETE와 같은 쿼리는 이 메서드를 통해 실행할 수 있습니다.
public int insertUser(User user) { String sql = "INSERT INTO users (name, email) VALUES (?, ?)"; return jdbcTemplate.update(sql, user.getName(), user.getEmail()); }
6. 트랜잭션 관리
JdbcTemplate은 트랜잭션을 관리하는 기능을 제공합니다. 트랜잭션을 사용하여 여러 SQL 쿼리를 묶어서 실행할 수 있습니다. 예를 들어, 데이터베이스에 여러 개의 삽입 쿼리를 실행할 때 트랜잭션을 사용하면 하나라도 실패할 경우 모든 변경사항을 롤백할 수 있습니다.
@Autowired private DataSource dataSource; @Bean public PlatformTransactionManager transactionManager() { return new DataSourceTransactionManager(dataSource); } @Transactional public void addUserTransaction(User user1, User user2) { insertUser(user1); insertUser(user2); }
결론
Spring의 JdbcTemplate을 사용하면 JDBC 프로그래밍을 훨씬 더 간편하게 할 수 있습니다. 데이터베이스와의 연결, 쿼리 실행, 예외 처리 등을 손쉽게 처리할 수 있으며, 유지보수에도 유리한 코드를 작성할 수 있습니다.