모각코/어쩌다보니 박준태가 조장이조
2. 6.(화) 모각코
potatoo
2024. 2. 8. 01:54
728x90
스프링은 데이터베이스와의 연동을 쉽게 도와주는 여러 가지 도구와 방식을 제공합니다.
JDBC(Java Database Connectivity)는 자바에서 데이터베이스에 접속할 수 있게 도와주는 API입니다.
JdbcTemplate은 이러한 JDBC를 좀 더 편리하게 사용할 수 있도록 스프링에서 제공하는 템플릿 클래스입니다.
이를 사용하면 데이터베이스 연동 코드를 좀 더 간결하고 안정적으로 작성할 수 있습니다.
JdbcTemplate은 스프링 JDBC의 핵심이며 다른 고수준의 기능들도 결국 내부에서는 이 JdbcTemplate을 활용합니다.
JdbcTemplate은 핵심 JDBC 작업 흐름(예: 문장 생성 및 실행)의 기본적인 업무를 수행하며, 애플리케이션 코드는 SQL을 제공하고 결과를 추출하는 역할을 담당합니다.
JdbcTemplate 클래스는 다음과 같은 기능을 제공합니다.
- SQL 쿼리 실행
- statements 및 저장된 procedure all 업데이트
- ResultSet 인스턴스를 반복하고 반환된 매개 변수 값의 추출을 수행
- JDBC 예외를 캡처하여 org.springframework.dao 패키지에 정의된 일반적이고 더 유용한 예외 계층으로 변환
JdbcTemplate의 queryForObject 메서드를 이용하여 단일 객체를 조회할 수 있습니다.
queryForObject의 두 번째 매개변수에 RowMapper를 전달하여 조회 결과를 매핑할 수 있습니다.
Customer customer = jdbcTemplate.queryForObject(
"select id, first_name, last_name from customers where id = ?",
(resultSet, rowNum) -> {
Customer customer = new Customer(
resultSet.getLong("id"),
resultSet.getString("first_name"),
resultSet.getString("last_name")
);
return customer;
}, id);
JdbcTemplate의 update 메서드를 이용하여 INSERT, UPDATE, DELETE 쿼리를 실행할 수 있습니다.
jdbcTemplate.update("insert into customers (first_name, last_name) values (?, ?)", customer.getFirstName(), customer.getLastName());
jdbcTemplate.update("delete from customers where id = ?", Long.valueOf(id));
JdbcTemplate을 사용하여 데이터베이스에 새로운 정보를 추가하고,
그 때 생성된 primary key (여기서는 id)를 가져오기 위해서 KeyHolder를 사용할 수 있습니다.
KeyHolder keyHolder = new GeneratedKeyHolder();
jdbcTemplate.update(connection -> {
PreparedStatement ps = connection.prepareStatement(
"insert into customers (first_name, last_name) values (?, ?)",
new String[]{"id"});
ps.setString(1, customer.getFirstName());
ps.setString(2, customer.getLastName());
return ps;
}, keyHolder);
Long id = keyHolder.getKey().longValue();
728x90