[Spring Boot] JDBC 이해하기

KUKJIN LEE's profile picture

KUKJIN LEE2개월 전 작성

1. JDBC 개요

JDBC(Java Database Connectivity)는 Java에서 데이터베이스와의 상호작용을 가능하게 해주는 표준 API입니다. SQL을 활용해 데이터베이스 작업을 수행하며, JDBC는 Java와 데이터베이스 간의 다리 역할을 합니다.

 

2. JdbcTemplate 활용하기

2.1 기본 설정

JdbcTemplate은 JDBC 작업을 단순화한 Spring의 편리한 유틸리티 클래스입니다.

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

 

2.2 주요 메서드

  • query(): SELECT 문 실행

  • update(): INSERT, UPDATE, DELETE 문 실행

  • execute(): DDL 문 실행

  • queryForObject(): 단일 결과 조회

2.3 사용 예제

JdbcTemplate을 직접 사용하는 경우는 줄어들고 있지만, Legacy 코드에서 많이 사용됩니다.

@Repository
public class UserRepository {
    private final JdbcTemplate jdbcTemplate;

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

    public User findById(Long id) {
        return jdbcTemplate.queryForObject(
            "SELECT * FROM users WHERE id = ?",
            new Object[]{id},
            (rs, rowNum) -> new User(
                rs.getLong("id"),
                rs.getString("username"),
                rs.getString("email")
            )
        );
    }
}

 

3. 데이터베이스 연결 설정

3.1 application.properties에서 설정

spring.datasource.url=jdbc:mysql://localhost:3306/dbname
spring.datasource.username=user
spring.datasource.password=password
spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver

 

3.2 Java Config로 설정

Java 설정을 활용해 DataSource를 구성할 수도 있습니다.

@Configuration
public class DataSourceConfig {
    @Bean
    public DataSource dataSource() {
        return DataSourceBuilder
            .create()
            .url("jdbc:mysql://localhost:3306/dbname")
            .username("user")
            .password("password")
            .driverClassName("com.mysql.cj.jdbc.Driver")
            .build();
    }
}

 

4. 주요 코드 예제

현대적인 방식으로 코드를 작성하는 것이 권장되지만, 아래 예제는 Legacy 코드나 JDBC 이해를 돕기 위해 예시 코드입니다.

 

4.1 INSERT 예제

public void saveUser(User user) {
    jdbcTemplate.update(
        "INSERT INTO users (username, email) VALUES (?, ?)",
        user.getUsername(),
        user.getEmail()
    );
}

 

4.2 UPDATE 예제

public void updateUser(User user) {
    jdbcTemplate.update(
        "UPDATE users SET username = ?, email = ? WHERE id = ?",
        user.getUsername(),
        user.getEmail(),
        user.getId()
    );
}

 

4.3 DELETE 예제

public void deleteUser(Long id) {
    jdbcTemplate.update("DELETE FROM users WHERE id = ?", id);
}

New Tech Posts