일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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
- Dependency Injection
- Framework
- Ubunt
- myBatis
- Di
- 컨테이너
- 리눅스
- @Spring-Test
- pointcut
- java
- Linux
- SpringJDBC
- XML
- 마이바티스
- JDBC TEMPLATE
- spring aop
- java spring
- @test
- STS
- Spring JDBC
- @AspectJ
- POJO
- JdbcTemplate
- spring
- AOP
- 프로퍼티
- spring framework
- Spring Boot
- @JUnit
- unix
Archives
- Today
- Total
개키우는개발자 : )
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 빈을 주입.
- 테스트 케이스:
- findHello:
- 데이터가 없을 때 null 반환 여부 확인.
- 데이터가 있을 때 올바른 객체 반환.
- increaseCount:
- 데이터 삽입 및 카운트 증가 기능 검증.
- countOf 메소드를 활용해 정확한 카운트 값 반환 여부 확인.
- findHello:
4. 구현 및 테스트 개선
- 테이블 초기화:
- @BeforeEach를 사용해 테스트 전 테이블을 생성 및 초기화.
- SQL: CREATE TABLE IF NOT EXISTS를 사용해 안전하게 테이블 구성.
- 예외 처리 개선:
- EmptyResultDataAccessException 발생 시 null 반환 처리.
- 테스트를 통해 데이터가 없을 때와 있을 때의 동작 모두 검증.
결론
- Repository 설계:
- JDBC 템플릿 기반 데이터 액세스 레이어 구현.
- 디폴트 메소드를 활용하여 인터페이스의 재사용성을 극대화.
- 효율적인 데이터 관리:
- 데이터 삽입, 조회, 업데이트를 효율적으로 처리.
- 예외 상황 처리 및 테스트를 통해 안정성 검증.
- 테스트 주도 개발(TDD):
- 각 기능을 테스트하며 구현을 개선.
- 데이터가 없는 상태와 있는 상태 모두 테스트하여 예상대로 동작하도록 보장.
다음 단계에서는 이 Repository를 서비스 빈에 통합하고, 해당 서비스를 테스트하는 방법을 다룰 예정입니다.
반응형
'토비의 스프링 부트 - 이해와 원리 > 섹션10 - Spring JDBC 자동 구성 개발' 카테고리의 다른 글
리포지토리를 사용하는 HelloService (1) | 2025.01.04 |
---|---|
JdbcTemplate과 트랜잭션 매니저 구성 (0) | 2025.01.03 |
DataSource 자동 구성 클래스 (0) | 2025.01.03 |
자동 구성 클래스와 빈 설계 (0) | 2025.01.03 |
Comments