Service
home
WOW Onboarding
home
🖥️

[실전 백엔드 스터디 3주차 과제]

들어가기 앞서

•
강의 유튜브 링크
•
강의 자료
BE-Week3.pdf
17.7 MiB
•
Github 링크

📌 이번 주차 진행 전 확인해주세요!

이번 주차 실습에 필요한 코드는 week3 브랜치 내에 작성되어 있어요. 위에 첨부한 깃허브 링크를 참고해주세요! 실습 코드 안에 있는 TODO 주석을 중점으로 봐 주시면 좋아요. 제가 작성한 과제 정답 코드는 다음 강의가 올라가기 전날 오후에 week3-done 브랜치로 업로드 해드릴 예정이에요.
안녕하세요, 실전 백엔드 스터디 멘토 유도훈입니다. 😊
추석 연휴는 잘 쇠셨나요? 저는 열심히 연휴 후유증을 이겨내려 노력 중입니다…🥹

👨‍💻 이번 주는 이런 걸 배웠어요.

패키지 이름이 바뀌었죠? 저희는 원래 controller, service, … 와 같은 패키지 안에 코드들을 넣었는데, 이제는 presentation, application, domain, infrastructure로 바뀌었어요.
전자는 종류를 기준으로 묶었다면, 후자는 이게 어느 위치에 있어야 하는지를 기준으로 묶었다고 생각하시면 좋아요. service가 repository를 사용하는 건 정상적이지만, 같은 코드가 application이 infrastructure를 쓰는 게 되는 순간 DDD 설계에서는 위반이 돼요. 코드는 한 글자도 바뀌지 않았지만 판정이 뒤집히게 되는 것이죠.
그리고 Port를 둘 자리가 명확해져요. 요구(interface)는 domain에, 기술은 infrastructure에 명확히 둘 수 있게 되었어요. 이렇게 interface를 이용한 Port와 구현하는 Adapter를 두는 것이 DIP를 구현할 수 있는 방법 중 하나였고, 이를 통해 순수 Java만의 공간을 만드는 아키텍처를 헥사고날 아키텍처라고 해요. 다만, 저희는 도메인에 @Entity와 같은 jakarta.persistence JPA는 제거하지 않았어요.
다음 4주차부터는 지현님이 담당하실 예정이에요. 4주차에는 영속성 컨텍스트와 트랜잭션, 동시성 제어에 대해 더 깊게 알아볼 거예요!
강의나 과제에 질문이 있다면 디스코드 #정규스터디-질문방 채널 혹은 개인 디스코드 메시지(닉네임: 도훈)로 연락 주세요!

과제

목표

•
WIL 작성
•
Order 쪽에도 DIP 적용하기 (코드 제출)

📌 WIL 작성

3주차 강의 및 실습 내용을 week3/wil.md에 정리해주세요.
꼭 300자 이상 작성해주셔야 해요!!
아래는 엑스칼리드로우에서 그린 내용인데요, 이번 기회에 미리 알아두시면 앞으로 있을 실전 스터디 내용이 좀 더 귀에 잘 들어오실거에요..!
•
Spring Data JPA와 JPA는 다른 것인가?
•
Hibernate는 무엇인가?

📌 Order 쪽에도 DIP 적용하기

강의에서는 Product쪽만 했죠? 똑같은 걸 Order 쪽에도 해보시면 돼요.
1.
domain/order/OrderRepository 인터페이스를 정의한다.
2.
infrastructure/persistence/OrderRepositoryAdapter를 만들어 구현한다.
3.
OrderService의 주입 타입을 바꾼다.
4.
테스트용 FakeOrderRepository를 만든다.
5.
OrderServiceTest에서 @SpringBootTest와 같은 어노테이션을 모두 없애고 테스트용 Fake를 주입한 뒤에도 테스트가 잘 실행되는지 확인한다.

참고사항

✅ TODO 코드 위치

TODO 위치
이번 주의 TODO는 강의 영상에서 전부 채웠어요, 각 TODO에서 무엇을 했는지 다시 한 번 돌아봐요!
단계
구현 위치
할 일
W3-1
domain/product/ProductRepository
메서드 정의하기 (JPA, Spring Data 타입 금지)
W3-2
application/product/ProductService application/order/OrderService
주입 타입을 domain 의 ProductRepository 로 교체하기 (두 파일!)
W3-3
infrastructure/persistence/ProductRepositoryAdapter
인터페이스를 implements하여 구현하고 @Repository 붙이기
W3-4
test/application/product/FakeProductRepository
HashMap 기반 가짜 저장소 만들기
W3-5
test/application/product/ProductServiceTest
어노테이션 세 개 걷어내고 @Autowired도 제거한 뒤 Fake 주입하기

✅  제출해야 할 파일과 파일 경로

•
작성한 코드
•
wil.md - 배운 점 300자 이상!
[여러분들의 저장소 이름] ├── readme.md ├── .gitignore ├── commerce // 실습 코드, 필수 └── week1/ ├── wil.md └── hw1.md └── week2/ └── wil.md └── week3/ └── wil.md // 필수
Plain Text
복사

부록

⁉️ week3 브랜치가 안 보여요!

다음 공지를 참고해주세요!

마감 기한

와우스터디에서 확인해주세요.

제출 방법

📖
자신의 레포지토리에 weekn 폴더를 생성해 wil.md 파일을 제출합니다. 더 자세한 사항은 아래 링크를 참조해주세요.