[Spring] JdbcTemplate으로 데이터베이스 접근하기!

2025. 1. 20. 14:18·Spring
728x90

Spring 프레임워크에서 데이터베이스를 다루는 방법은 여러 가지가 있다.

그 중에서도 JdbcTemplate은 JDBC를 한층 더 추상화하여 개발자가 더 쉽게 데이터베이스에 접근할 수 있도록 도와주는 Spring의 핵심 컴포넌트이다.


JdbcTemplate이 뭘까?

JdbcTemplate은 Spring Framework에서 제공하는 JDBC 추상화 클래스이다.

전통적인 JDBC의 모든 기능을 그대로 사용할 수 있으면서도, 반복적이고 복잡한 JDBC 코드를 대폭 줄여주는 장점이 있다.

기존 JDBC의 try-catch 문과 같은 예외처리, Connection 객체 관리, PreparedStatement 처리 등을 JdbcTemplate이 자동으로 처리해주기 때문에 개발자는 SQL 쿼리 작성과 결과 매핑에만 집중할 수 있다는 장점도 있다.


JdbcTemplate 설정해보기

1. 먼저 의존성을 추가해야 한다.

<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-jdbc</artifactId>
</dependency>

이 의존성은 Spring Boot 프로젝트에서 JDBC 관련 기능을 사용할 수 있게 해준다.

2. 다음으로 DataSource 설정이 필요하다.

@Configuration
public class DatabaseConfig {
    
    @Bean
    public JdbcTemplate jdbcTemplate(DataSource dataSource) {
        return new JdbcTemplate(dataSource);
    }
}

이 설정으로 스프링 컨테이너는 JdbcTemplate 빈을 생성하고 관리하게 된다.


JdbcTemplate 기본 사용법

1. 조회 쿼리 실행하기

단일 결과 조회:

String sql = "SELECT name FROM users WHERE id = ?";
String name = jdbcTemplate.queryForObject(sql, String.class, userId);

이 코드는 특정 ID를 가진 사용자의 이름을 조회하는 예시이다.

queryForObject는 단일 결과를 반환할 때 사용한다.

 

여러 결과 조회:

String sql = "SELECT * FROM users";
List<User> users = jdbcTemplate.query(sql, new BeanPropertyRowMapper<>(User.class));

query 메서드는 여러 행을 조회할 때 사용하며,

BeanPropertyRowMapper를 통해 결과를 자동으로 객체로 매핑한다고 보면된다.

 

*복잡한 객체 매핑을 위해 RowMapper도 구현 할 수 있다!*

public class UserRowMapper implements RowMapper<User> {
    @Override
    public User mapRow(ResultSet rs, int rowNum) throws SQLException {
        User user = new User();
        user.setId(rs.getLong("id"));
        user.setName(rs.getString("name"));
        user.setEmail(rs.getString("email"));
        return user;
    }
}

// 위 구현한 RowMapper를 쿼리에서 사용하는 예시
String sql = "SELECT * FROM users WHERE id = ?";
User user = jdbcTemplate.queryForObject(sql, new UserRowMapper(), userId);

2. 데이터 수정하기

String sql = "UPDATE users SET name = ? WHERE id = ?";
int updatedRows = jdbcTemplate.update(sql, newName, userId);

update 메서드는 INSERT, UPDATE, DELETE 쿼리를 실행할 때 사용되며, 영향받은 행의 수를 반환한다.

728x90

'Spring' 카테고리의 다른 글

[Spring] JPA와 Spring Data JPA가 뭘까???  (0) 2025.01.20
[Spring] MyBatis 개념정리 🤩  (0) 2025.01.20
[Spring] 🔎 DataSource와 트랜잭션 개념정리 🔎  (2) 2025.01.20
[Spring] Controller의 Return Type과 Parameter 가이드 👍  (1) 2025.01.20
[Spring] Spring Singleton Pattern과 주요 어노테이션 정리 ✅  (1) 2025.01.20
'Spring' 카테고리의 다른 글
  • [Spring] JPA와 Spring Data JPA가 뭘까???
  • [Spring] MyBatis 개념정리 🤩
  • [Spring] 🔎 DataSource와 트랜잭션 개념정리 🔎
  • [Spring] Controller의 Return Type과 Parameter 가이드 👍
프론트 개발자 김현중
프론트 개발자 김현중
👋반갑습니다 저는 나눔을 실천하는 개발자 꿈나무 김현중입니다⌨️🚀
  • 프론트 개발자 김현중
    삥구의 개발블로그
    프론트 개발자 김현중
  • 전체
    오늘
    어제
    • 분류 전체보기 (92)
      • 알고리즘 (5)
      • Swift (3)
      • 컴퓨터네트워크 (1)
      • React (38)
      • Docker (1)
      • SQL (8)
      • Database (2)
      • 배포 (1)
      • Spring (9)
      • TypeScript (5)
      • Next.js (12)
      • Git (1)
      • 회고 (1)
      • 컴퓨터그래픽스 (2)
      • Python (1)
      • Brew (1)
      • LangChain (1)
  • 블로그 메뉴

    • 홈
    • 태그
    • 방명록
  • 링크

  • 공지사항

  • 인기 글

  • 태그

    데이터베이스
    ReactHooks
    java
    MySQL
    코딩테스트
    appRouter
    Next.js
    javascript
    Backend
    springboot
    react
    Spring
    frontend
    typescript
    백준
    웹개발
    프론트엔드
    database
    nextjs
    알고리즘
  • 최근 댓글

  • 최근 글

  • 250x250
  • hELLO· Designed By정상우.v4.10.1
프론트 개발자 김현중
[Spring] JdbcTemplate으로 데이터베이스 접근하기!
상단으로

티스토리툴바