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

개키우는개발자 : )

Hello 리포지토리 본문

반응형

요약 및 핵심 개념

이 문서는 JDBC 템플릿을 이용해 Hello 데이터를 액세스 및 관리하는 Repository를 설계하고, 이를 구현 및 테스트하는 과정을 다룹니다. 또한 인터페이스의 디폴트 메소드를 활용하여 재사용 가능한 로직을 설계하고, 테스트를 통해 동작을 검증합니다.


핵심 내용

1. Repository 설계 및 구현

  • Repository 개념:
    • 데이터 액세스 계층을 담당하며, 테이블 정보를 조회, 삽입, 업데이트 등의 작업을 처리.
    • HelloRepository라는 인터페이스 설계, JDBC 템플릿 기반 구현체 작성.
  • HelloRepository 인터페이스:
    • findHello(String name): 이름으로 데이터를 검색.
    • increaseCount(String name): 이름의 카운트를 1 증가.
    • countOf(String name): 특정 이름의 카운트 값을 반환(디폴트 메소드 활용).
  • 디폴트 메소드 활용:
    • countOf: findHello를 활용하여 데이터 존재 여부 확인 후 카운트 값을 반환.
    • 디폴트 메소드는 인터페이스 구현체에서 구현 부담을 줄이고 코드 재사용성을 높임.

2. JDBC 템플릿을 활용한 구현

  • FindHello:
    • queryForObject를 사용하여 데이터 조회.
    • RowMapper를 사용해 ResultSet을 Hello 객체로 매핑.
    • 데이터가 없을 경우 EmptyResultDataAccessException을 캐치하여 null 반환.
  • IncreaseCount:
    • 데이터가 없을 경우:
      • 새로운 데이터 삽입(INSERT INTO).
      • 카운트 값 초기화(1).
    • 데이터가 존재할 경우:
      • 카운트를 증가시키는 업데이트(UPDATE SET COUNT).

3. 테스트 코드 작성 및 검증

  • 테스트 전략:
    • 내장형 DB(H2)를 활용하여 독립적 테스트 환경 구성.
    • @HelloBootTest와 @Autowired를 활용해 Repository 빈을 주입.
  • 테스트 케이스:
    1. findHello:
      • 데이터가 없을 때 null 반환 여부 확인.
      • 데이터가 있을 때 올바른 객체 반환.
    2. increaseCount:
      • 데이터 삽입 및 카운트 증가 기능 검증.
      • countOf 메소드를 활용해 정확한 카운트 값 반환 여부 확인.

4. 구현 및 테스트 개선

  • 테이블 초기화:
    • @BeforeEach를 사용해 테스트 전 테이블을 생성 및 초기화.
    • SQL: CREATE TABLE IF NOT EXISTS를 사용해 안전하게 테이블 구성.
  • 예외 처리 개선:
    • EmptyResultDataAccessException 발생 시 null 반환 처리.
    • 테스트를 통해 데이터가 없을 때와 있을 때의 동작 모두 검증.

결론

  1. Repository 설계:
    • JDBC 템플릿 기반 데이터 액세스 레이어 구현.
    • 디폴트 메소드를 활용하여 인터페이스의 재사용성을 극대화.
  2. 효율적인 데이터 관리:
    • 데이터 삽입, 조회, 업데이트를 효율적으로 처리.
    • 예외 상황 처리 및 테스트를 통해 안정성 검증.
  3. 테스트 주도 개발(TDD):
    • 각 기능을 테스트하며 구현을 개선.
    • 데이터가 없는 상태와 있는 상태 모두 테스트하여 예상대로 동작하도록 보장.

다음 단계에서는 이 Repository를 서비스 빈에 통합하고, 해당 서비스를 테스트하는 방법을 다룰 예정입니다.

반응형
Comments