반응형
Notice
Recent Posts
Recent Comments
관리 메뉴

개키우는개발자 : )

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 메소드를 사용해 데이터 개수를 확인하고, 결과 검증.

결론

  1. JDBC 템플릿 및 트랜잭션 매니저 구성:
    • 자동 구성을 통해 효율적이고 유연한 데이터베이스 작업 환경 구축.
  2. 효율적인 테스트 환경:
    • 내장형 DB(H2)를 활용해 독립적 테스트 환경 구성.
    • 트랜잭션 롤백을 통해 데이터 간섭 방지.
  3. SQL 작업 검증:
    • 삽입 및 조회 작업을 통해 템플릿 동작 확인.

이로써 JDBC 템플릿과 트랜잭션 매니저를 활용한 데이터베이스 작업 준비가 완료되었습니다. 다음 단계에서는 이를 기반으로 실제 애플리케이션 기능 개발을 진행할 수 있습니다.

반응형
Comments