본문 바로가기
Backend - Java Spring/Spring Core

[Spring 김영한] 기본예제 만들어보기 (리포지토리)

by VictorMeredith 2023. 11. 21.

1. 비즈니스 요구사항 정리

- 데이터 : 회원ID, 이름

- 기능 : 회원 등록, 조회

- 가상의 시나리오 (DB 선정되지 않음)

 

2. 웹앱의 계층구조

- 컨트롤러 : 웹MVC의 컨트롤러

- 서비스 : 핵심 비즈니스 로직을 구현한 계층

- 리포지토리 : DB에 접근, 도메인 객체를 DB에 저장하고 관리

- 도메인 : 비즈니스 도메인 객체 

 

3. 클래스의 의존관계

- MemberService : 서비스 구현

- MemberRepository : 인터페이스

- MemoryMemberRepository : 메모리모드로 메모리에 저장해서 DB를 대신하는 구현체

 

4. 회원 도메인과 리포지토리 만들기

- /domain/Member.class 에 멤버객체를 만들어줌

 

 

- /repository/MemberRepository를 인터페이스로 만든다

MemberRepository

 

- /repository/MemoryMemberRepository.class 구현체를 만든다.

옵션 + 엔터를 눌러서 메서드 구현을 누르면 알아서 된다

 

- 구현체를 아래와 같이 수정해서 구현해본다

findByName에 return 빼먹은 것 같다

 

5. 테스트케이스

- JUnit 프레임워크로 테스트를 진행한다.

- 모든 테스트케이스는 순서와 관련 없이 독립적이어야 한다.

- `src/test/java` 하위 폴더에 생성한다.

- 클래스이름Test 라고 짓는게 국룰이라고 한다.

 

MemoryMemberRepositoryTest.java

- 이런식으로 작성해주면 된다.

- @Test 어노테이션을 붙여서 작성해주고 ExpressJS 에서 했던 단위테스트랑 비슷하다.

- assertThat은 Assertions를 import 할 때 option+Enter로 static import 해주면 사용 가능. 아래 참조

 

- findByName도 테스트케이스를 작성해준다.

 

- findByAll도 테스트케이스를 작성해준다.

- 그 전에 afterEach를 이용해서 repository의 clearStore 메소드를 실행시켜준다. (당연히 클래스에 추가해줘야한다)

MemoryMemberRepository.java

 

- 이렇게 findAll() 까지 테스트케이스를 작성하고 마무리한다.

 

- 터미널에 ./gradlew test 로 한번에 테스트케이스를 실행해볼 수 있다.

- 패키지의 우클릭으로 테스트케이스를 실행해볼 수도 있다.

댓글