우아한 테크 캠프 PRO 2기 - 2주차 JPA 후기
2021. 6. 1. 12:29ㆍ우아한테크캠프PRO
2주차 JPA 후기
2주차 git 저장소: https://github.com/ybh89/jwp-qna.git
2주차 미션을 완료했다.
2주차 미션을 간단 요약을 하면 아래와 같다.
- 엔티티 매핑
- 연관관계 매핑
- 레거시 코드 TDD로 리팩토링하기
나는 JPA에 대해서는 이미 학습되어 있고 경험도 있었기 때문에 쉽게 넘어갈 수 있었다. 나에게 핵심은 레거시 코드를 TDD로 리팩토링하는 것이었다. QnA 서비스가 이미 레거시 코드로 작성되어 있었고 질문과 답변을 삭제하는 기능을 TDD로 리팩토링하는 것이다.
기능 요구 사항은 아래와 같다.
- 질문 데이터를 완전히 삭제하는 것이 아니라 데이터의 상태를 삭제 상태(deleted - boolean type)로 변경한다.
- 로그인 사용자와 질문한 사람이 같은 경우 삭제할 수 있다.
- 답변이 없는 경우 삭제가 가능하다.
- 질문자와 답변 글의 모든 답변자 같은 경우 삭제가 가능하다.
- 질문을 삭제할 때 답변 또한 삭제해야 하며, 답변의 삭제 또한 삭제 상태(deleted)를 변경한다.
- 질문자와 답변자가 다른 경우 답변을 삭제할 수 없다.
- 질문과 답변 삭제 이력에 대한 정보를 DeleteHistory를 활용해 남긴다.
이렇게 기능 요구사항이 정리가 잘 되어있으니 TDD가 정말 쉬웠다. 그냥 하나 하나 미션을 클리어해가면 완성되었다. 그래서 TDD에서 정말 중요한게 기능 요구사항을 잘 정리하는 거라는 생각이 들었다.
또, 이 미션의 핵심은 서비스에 구현되어 있는 비즈니스 로직을(트랜잭션 스크립트 패턴) 도메인쪽으로 옮기는 것이다.(도메인 모델 패턴)
이 또한 이미 도메인 모델 패턴으로 개발하는 것이 1주차에서 학습되어 있어 쉽게 개념을 잡고 진행할 수 있었다. 그래서 1주차보다 쉬웠고 피드백 또한 많이 받지 않았다.
뭔가 도메인 모델 패턴으로 설계할 수 있는 능력이 생긴것 같아 성장한 기분이 들었다.
'우아한테크캠프PRO' 카테고리의 다른 글
우아한 테크 캠프 PRO 2기 - 4주차 그럴듯한 서비스 만들기 후기 (0) | 2021.06.18 |
---|---|
우아한 테크 캠프 PRO 2기 - 3주차 인수 테스트 주도 개발 후기 (0) | 2021.06.16 |
우아한 테크 캠프 PRO 2기 - 1주차 로또 TDD 후기 (0) | 2021.05.27 |