TDD 연습 프로젝트 14 - Member : Membership = 1 : N

zunzero·2022년 9월 18일
0

스프링, JPA

목록 보기
22/23

이전까지의 개발은 Membership 따로, Member 따로 진행해왔다.
HttpServletRequest 헤더에 사용자 식별값이 별도로 들어있다는 가정하게 개발을 진행해 온 것이다.

그래서 헤더에 값이 없으면 BadRequest 응답을 보내도록 되어있었다.
하지만 이번에 개발할 /api/v2 에서는 헤더에 있는 토큰 값을 파싱하여 Member를 찾아내 해당 Member와 Membership을 묶어줄 것이다.

두 클래스는 N:1의 관계이다.
따라서 도메인을 아래와 같이 수정해주었다.

JPA에서의 연관관계에 대한 자세한 설명은 옛 글에 기록해두었으니 넘어가고 참고할 부분만 적고 넘어가자.
fetch 타입은 기본적으로 EAGER인데, 이는 1+N의 이슈 등을 발생시킬 수 있어 가급적 LAZY로 설정해두고 JPQL에서 fetch join 문을 이용하는 것이 좋다.

Membership 등록 V2

Service 계층을 V2를 만들어서 테스트 코드와 프로덕트 코드를 작성하였다.

기존의 서비스와 거의 같은 작업을 진행하기 때문에 테스트 코드와 프로덕션 코드 모두 기존의 것과 크게 다르지 않다.

Membership을 등록하는 컨트롤러는 아래와 같다. (TDD로 작성하지 못하고 프로덕션 코드만 작성하게 되었다.)

나머지들도 N:1 연관관계에 맞춰서 잘 개발해두었다.!
나의 깃헙에 들어가면 전체 코드를 볼 수 있다.
https://github.com/JUNYEONG-K/membership-api

profile
나만 읽을 수 있는 블로그

0개의 댓글