2주 차 미션 : JPA
저장소 : https://github.com/prodo-developer/jwp-qna
느낀점
- JPA의 대한 깊은 이해
- 객체의 참조와 테이블의 외래 키를 매핑해서 객체에서는 참조를 사용하고 테이블에서는 외래 키를 사용하기
- 객체는 연관된 객체를 찾을 때 참조를 사용할때는 영속성 전이를 시도
- 결합도에 대한 이해
이번 과정의 목표 경험
- 점진적으로 리팩토링하는 경험
- JPA 엔티티 매핑
- JPA 연관관계 매핑 (일대다)
- 동기들과 페어 프로그래밍 진행
내 코드 피드백
일대다 관계, 다대일 관계 (영속성 전이) 에 대한 이해가 부족했었다. 가급적이면 양방향을 사용하지 않고
일대다 방식을 권장한다.
다시 한번 김영한의 JPA강의를 보면서 이해 할 필요가 있다.
Junit에 static을 선언하고 Test를 돌리다보면 찾기 힘든 에러들을 발견하는 경우들을 볼 수 있다.
테스트 작성 시 다른 테스트에 영향을 받지 않도록 구성해야 합니다.
static 변수를 만들고 여기저기서 사용하고 있어서 테스트 간 격리가 제대로 이루어지지 않고 테스트간 서로 영향을 받게 되겠네요.
가장 먼저 매핑 관계에 Cascade(영속성 전이)가 일어나면 저장에 실패할 수가 있으므로 주의!
메서드의 이름을 확실하게 정의 할 필요가 있다.
이번 미션역시 get, set을 강조하는것 보다, 동사 형태로 짓는걸 권장한다.
또한, 이 역할을 그 기능을 확실하게 분리 할 필요가 있다.
결합도에 대한 이해가 부족하여, 기존에 오브젝트책을 참고하고, 모각코를 하는과정에 팀원들과 이야기를 나누며
이해를 조금씩 했었다.
결국 한곳에서 모든 역할을 결합하게되면 한곳에서 수정이 모두 일어나기 때문에 결합도가 떨어질 수 있습니다.
도메인에 있던 delete기능들을 QnaService로 분리하였다.
후기
이번 JPA 수업은 그 동안 사이드 프로젝트, 김영한의 인프런 인강을 보고 만만하게 봤다가 크게 다쳤다.
이번 우아한 테크캠프가 끝나면 아래의 책을 다시한번 실습 해 보면서 깊숙하게 이해 해야겠다.
인프런 인강역시 야생형으로 한 사이클로 봤다면 학자형으로 완전히 내것이 될 때까지 봐야겠다.
코드로 배우는 스프링 부트 웹 프로젝트
'오늘의 일상 > 회고록' 카테고리의 다른 글
[우아한테크캠프 pro 2기] 6주차 서비스 진단하기, 코드리뷰 (0) | 2021.06.26 |
---|---|
[우아한테크캠프 pro 2기] 3주차 미션 ATDD 후기, 코드리뷰 (0) | 2021.06.22 |
[우아한테크캠프 pro 2기] 1주차 미션 로또(Lotto) 후기, 코드리뷰 (0) | 2021.05.30 |
2021-04-10 4월 계획 및 근황 정리 (0) | 2021.04.10 |
2021-03-27 2주간 근황 정리 (0) | 2021.03.27 |