JDBC API를 사용했을 때 불편한 부분
- 반복되는 코드
- 연결부터 자원의 반납까지 모든 부분의 관리 필요
- 예외처리로 인해서 코드 복잡도 상승
JdbcTemplate
- Spring에서 개발자가 JDBC를 쉽게 사용할 수 있도록 도와주는 클래스
- JDBC 코어 패키지의 중앙 클래스
- JDBC와 같은 라이브러리로 사용 가능
- implementation 'org.springframework.boot:spring-boot-starter-jdbc'
JdbcTemplate을 사용하면 해결되는 부분
- 구조적인 반복 해결
- 손쉬운 Transaction 처리
- 쉽게 자바 객체로 매핑 가능
구조적인 반복 해결
- JDBC API를 사용할 때 요청 시 다음 과정이 진행됨
- try-catch 문 생성
- Connection 획득 / 종료
- Statement 준비 / 실행 / 종료
- 결과를 가져오기 위한 ResultSet 생성
- 예외 처리
- 실제 쿼리를 요청하는 부분 외에 구조적인 반복이 심하다는 문제점이 있음
- JdbcTemplate를 사용할 경우 위 반복을 내부적으로 처리해주고 작업의 목적을 분명하게 만들 수 있음
손쉬운 Transaction 처리
- JDBC API에서 트랜잭션을 사용하기 위해서는 다음 사항들이 추가적으로 요구됨
- Auto commit 설정 해제
- Commit을 위한 코드 추가 필요
- JdbcTemplate를 사용할 경우에는 @Transactional을 이용하여 트랜잭션 처리 가능
쉽게 자바 객체로 매핑 가능
- JDBC API를 사용할 때는 ResultSet에서 컬럼을 꺼내고 직접 매핑하는 작업이 필요
- JdbcTemplate를 사용하면 맵퍼를 이용해 객체 생성이 가능
** JdbcTemplate 이용하기!
환경 설정
- JDBC 환경과 동일하게 진행 가능
- build.gradle 파일에 JDBC와 DB Driver 관련 라이브러리 추가
- implementation 'org.springframework.boot:spring-boot-starter-jdbc'
- runtimeOnly 'mysql:mysql-connector-java'
- rescources/application.properties 파일에 데이터베이스 접속 정보 추가
- spring.datasource.url=jdbc:mysql://localhost:3306/board
- spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver
- spring.datasource.username=username
- spring.datasource.password=password
- 생성한 Entity도 동일하게 사용 가능
Jdbc Template을 사용할 때 JDBC API에서 바뀌는 부분
- 반복되는 코드를 대부분 제거
- SQL은 작성
JdbcTemplate를 이용하여 게시글 저장
- JdbcTemplate에서 insert와 update, delete는 update() 메소드를 사용
- 쿼리 실행으로 인해 변경된 행의 개수를 반환
JdbcTemplate를 이용하여 게시글 조회
- mapper 사용
JdbcTemplate CRUD에 사용되는 method 정리
JdbcTemplate | Example | |
Create | update SimpleJdbcInsert |
String query = "insert into post(title, content) values(?,?)"; jdbcTemplate.update(query, "제목", "내용"); |
Read | query : 결과 다수 queryForObject : 결과 0개 또는 1개 |
String query = "select id, title from post where id = ?"; jdbcTemplate.query(query, 27); |
Update | update | String query = "update post set content = ? where id = ?"; jdbcTemplate.update(query, "변경된 내용", 27); |
Delete | update | String query = "delete from post where id = ?"; jdbcTemplate.update(query, 27); |
정리 !
JDBC API보다 JdbcTemplate을 사용하는 것이 더 많은 장점을 가짐
- 반복 문제 해결
- 간결한 코드로 가독성 향상
- 자동화 해주는 부분과 객체 매핑을 간단하게 가능
단점
- SQL을 직접 작성
'spring' 카테고리의 다른 글
JPA / Hibernate / Spring Data JPA (0) | 2024.09.13 |
---|---|
ORM (0) | 2024.09.13 |
JDBC (0) | 2024.09.13 |
Entity / DTO / DAO / Repository (0) | 2024.09.13 |
PUT, DELETE API (0) | 2024.09.13 |