일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |
Tags
- STS
- spring aop
- myBatis
- Di
- java
- 컨테이너
- POJO
- AOP
- 프로퍼티
- Linux
- Spring JDBC
- @test
- spring framework
- java spring
- spring
- Spring Boot
- SpringJDBC
- @JUnit
- pointcut
- 마이바티스
- Framework
- @AspectJ
- unix
- Dependency Injection
- XML
- Ubunt
- JdbcTemplate
- 리눅스
- @Spring-Test
- JDBC TEMPLATE
Archives
- Today
- Total
개키우는개발자 : )
JdbcTemplate과 트랜잭션 매니저 구성 본문
토비의 스프링 부트 - 이해와 원리/섹션10 - Spring JDBC 자동 구성 개발
JdbcTemplate과 트랜잭션 매니저 구성
DOGvelopers 2025. 1. 3. 23:24반응형
요약 및 핵심 개념
이 문서는 JDBC 템플릿과 JDBC 트랜잭션 매니저를 자동 구성하고, 테스트 환경에서 이를 활용하여 데이터베이스 작업을 수행하는 방법을 설명합니다. 특히, 트랜잭션 관리를 통해 테스트 간 데이터 간섭을 방지하고, 효율적인 DB 초기화와 SQL 실행 방식을 다룹니다.
핵심 내용
1. JDBC 템플릿 및 트랜잭션 매니저 자동 구성
- JDBC 템플릿:
- SQL 작업을 간소화하기 위한 스프링 제공 템플릿 클래스.
- 데이터 소스(DataSource)를 기반으로 작동하며, 조건부 애노테이션을 활용해 등록.
- @ConditionalOnSingleCandidate를 사용하여 데이터 소스 빈이 하나만 존재할 경우만 템플릿 생성.
- JDBC 트랜잭션 매니저:
- 트랜잭션의 시작과 종료를 관리하며, 선언적 트랜잭션(@Transactional) 사용 가능.
- @EnableTransactionManagement를 통해 트랜잭션 관리 활성화.
2. 조건부 빈 등록 및 트랜잭션 관리
- 조건부 빈 등록:
- 데이터 소스가 하나만 존재할 때 동작하도록 구성(@ConditionalOnSingleCandidate).
- 빈이 없는 경우에만 기본 데이터 소스를 등록하는 구조.
- 선언적 트랜잭션 관리:
- @Transactional 애노테이션을 사용해 트랜잭션 경계를 간편히 설정.
- 테스트에서는 자동으로 롤백되도록 하여 테스트 데이터가 다른 테스트에 영향을 미치지 않음.
3. 테스트 전략
- 내장형 데이터베이스(H2) 활용:
- 메모리 기반 데이터베이스를 사용하여 독립적 테스트 환경 구성.
- 테스트 시작 시 DB 테이블 생성 및 초기화 작업 수행.
- @BeforeEach를 사용해 테스트 전 테이블 생성(SQL CREATE TABLE IF NOT EXISTS 사용).
- 테스트 코드 작성:
- 데이터 삽입(INSERT) 및 조회(SELECT) 작업을 수행하는 테스트 코드 작성.
- JdbcTemplate을 활용해 SQL 실행 및 결과 확인.
4. 테스트 코드 개선
- 합성 애노테이션 사용:
- 반복적으로 사용되는 애노테이션을 합성하여 커스텀 애노테이션 생성(@HelloBootTest).
- 테스트 코드의 가독성과 유지보수성 향상.
- 롤백 테스트:
- 트랜잭션 롤백이 정상적으로 동작하는지 확인.
- 트랜잭션이 롤백되지 않는 설정(rollbackFor=false)을 적용하여 데이터가 남아있을 때의 동작 확인.
5. JDBC 템플릿 SQL 작업
- 데이터 삽입:
- update 메소드를 사용해 테이블에 데이터 삽입.
- 예제: 이름과 카운트를 가진 데이터를 테이블에 추가.
- 데이터 조회:
- queryForObject 메소드를 사용해 데이터 개수를 확인하고, 결과 검증.
결론
- JDBC 템플릿 및 트랜잭션 매니저 구성:
- 자동 구성을 통해 효율적이고 유연한 데이터베이스 작업 환경 구축.
- 효율적인 테스트 환경:
- 내장형 DB(H2)를 활용해 독립적 테스트 환경 구성.
- 트랜잭션 롤백을 통해 데이터 간섭 방지.
- SQL 작업 검증:
- 삽입 및 조회 작업을 통해 템플릿 동작 확인.
이로써 JDBC 템플릿과 트랜잭션 매니저를 활용한 데이터베이스 작업 준비가 완료되었습니다. 다음 단계에서는 이를 기반으로 실제 애플리케이션 기능 개발을 진행할 수 있습니다.
반응형
'토비의 스프링 부트 - 이해와 원리 > 섹션10 - Spring JDBC 자동 구성 개발' 카테고리의 다른 글
리포지토리를 사용하는 HelloService (1) | 2025.01.04 |
---|---|
Hello 리포지토리 (3) | 2025.01.03 |
DataSource 자동 구성 클래스 (0) | 2025.01.03 |
자동 구성 클래스와 빈 설계 (0) | 2025.01.03 |
Comments