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

개키우는개발자 : )

Jdbc 자동 구성 살펴보기 본문

토비의 스프링 부트 - 이해와 원리/섹션11 - 스프링 부트 자세히 살펴보기

Jdbc 자동 구성 살펴보기

DOGvelopers 2025. 1. 4. 15:28
반응형

스프링 부트 JDBC 템플릿 자동 구성 분석

스프링 부트 JDBC 템플릿 스타터는 데이터 소스와 관련된 자동 구성 요소를 통해 데이터베이스와 상호 작용하는 과정을 단순화합니다. 이번 분석에서는 JDBC 템플릿과 관련된 자동 구성 빈과 그 동작 방식을 살펴봅니다.


1. JDBC 템플릿 스타터 추가 효과

  • 자동 구성 빈 증가:
    • JDBC 스타터 추가 전: 기본 13개.
    • JDBC 스타터 추가 후: 약 32개.
    • 약 19개의 자동 구성 빈이 추가됨.

2. 주요 자동 구성 클래스

1) PersistenceExceptionTranslationAutoConfiguration

  • 역할:
    • 데이터 접근 예외를 추상화하여 예외 번역 기능을 제공.
  • 조건:
    • spring.dao.exceptionTranslation.enabled 프로퍼티가 true이거나 설정하지 않을 경우 기본 활성화.
  • 활용:
    • 스프링 데이터 접근의 일관성을 높임.

2) DataSourceAutoConfiguration

  • 역할:
    • 데이터 소스를 자동으로 구성하여 JDBC 템플릿이 사용할 수 있게 함.
  • 조건:
    • JDBC URL, 사용자 이름, 비밀번호 등의 프로퍼티가 설정되어야 동작.
    • 히카리CP(HikariCP) 데이터 소스가 기본값으로 사용.
  • 특징:
    • JDBC URL에서 데이터베이스 드라이버 클래스 이름을 자동으로 추론.
    • 스프링 부트는 주요 데이터베이스의 드라이버를 지원하여, 명시적으로 드라이버 클래스를 설정하지 않아도 됨.

3) TransactionManagerAutoConfiguration

  • 역할:
    • DataSourceTransactionManager를 자동으로 등록하여 트랜잭션 관리 지원.
  • 활용:
    • @Transactional 선언적 트랜잭션 방식 사용.
    • 직접 트랜잭션을 관리하려면 트랜잭션 템플릿을 사용.

4) JdbcTemplateAutoConfiguration

  • 역할:
    • 스프링의 핵심 JdbcTemplate 및 NamedParameterJdbcTemplate을 자동 구성.
  • 활용:
    • spring.jdbc로 시작하는 프로퍼티를 통해 설정 가능.
    • SQL 실행과 데이터베이스 작업을 간소화.

5) SQL Initialization AutoConfiguration

  • 역할:
    • 데이터베이스 초기화를 위한 SQL 스크립트를 자동 실행.
  • 조건:
    • spring.sql.init.* 프로퍼티로 설정 가능.
    • 데이터베이스 초기화 및 데이터 로딩 작업 지원.

3. 데이터 소스 설정과 동작 방식

1) 임베디드 데이터베이스

  • 지원되는 데이터베이스:
    • H2, HSQL, Derby.
  • 특징:
    • 클래스패스에 데이터베이스 라이브러리가 있으면 자동 구성.
    • 별도의 설정 없이도 임베디드 데이터베이스를 사용할 수 있음.

2) Pooled Data Source

  • 히카리CP(HikariCP):
    • 기본 데이터 소스 구현체.
    • 고성능과 낮은 지연 시간을 자랑.
  • 자동 설정:
    • 데이터베이스 URL, 사용자 이름, 비밀번호 설정만으로 기본 데이터 소스 생성.
    • 필요시 커스터마이저를 통해 데이터 소스 설정 변경 가능.

3) 드라이버 클래스 네임 자동 결정

  • 방식:
    • 프로퍼티에서 드라이버 클래스가 지정되지 않았을 경우, JDBC URL에서 자동 결정.
    • 주요 데이터베이스에 대해 사전 정의된 드라이버 클래스 이름 목록을 참조.

4. 트랜잭션 관리

1) 트랜잭션 매니저

  • DataSourceTransactionManager:
    • JDBC 트랜잭션 관리용.
    • 기존의 트랜잭션 관리 방식을 개선하여 더 간단하고 강력한 기능 제공.

2) 트랜잭션 템플릿

  • 역할:
    • 프로그래밍 방식으로 트랜잭션을 관리할 수 있는 유틸리티 제공.
  • 활용:
    • TransactionTemplate 빈으로 등록.
    • 선언적 트랜잭션 방식과 함께 사용 가능.

5. 활용 전략

  1. 자동 구성 이해:
    • 데이터 소스 설정 없이도 기본적인 데이터베이스 연결과 작업 가능.
    • 드라이버 클래스 이름 자동 결정 기능 활용.
  2. 필요시 커스터마이징:
    • 커넥션 풀 설정, 트랜잭션 매니저 동작 방식 등 세부 설정 변경 가능.
  3. JDBC 템플릿 활용:
    • 데이터베이스 작업을 간소화.
    • 직접 SQL을 실행할 때 유용.
  4. 트랜잭션 관리 최적화:
    • @Transactional과 TransactionTemplate 병행 사용.

결론

스프링 부트 JDBC 템플릿 스타터는 데이터 소스 구성과 데이터베이스 작업의 복잡성을 크게 줄여줍니다. 자동 구성된 빈과 설정을 이해하고, 필요시 커스터마이징하여 애플리케이션에 적합한 데이터베이스 작업 환경을 구축할 수 있습니다.

반응형
Comments