KUKJIN LEE
posted 1 day ago
[Spring Boot] JDBC 이해하기
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);
}