당니의 개발자 스토리
상품 서비스 개발 본문
상품 서비스 개발
여러분 이번 시간에는 상품 서비스를 개발해 보겠습니다.

ItemService를 만들면 되구요.

여기까지 쭉쭉 적어주시면 되겠죠.

그 다음에 save가 필요하겠죠. 근데 지금 보시면 readOnly 잖아요.

그럼 save는 @Transactional이 있어야 되죠. 왜냐면 readOnly = true이면,

얘가 저장이 안됩니다. 그래서 save 위에 @Transactional을 써줘서 오버라이딩을 해버린 거죠. 그러니까 맨 위의 @Transactional annotation은 전체를 먹는 거고. method에 가까운 게 더 우선권을 가집니다.
자 그 다음에 조회하는 걸 만들어 볼게요.

이미 만들어 놔서 이렇게 하면 끝납니다. 그럼 findItems()는 @Transactional이 없으니까 맨 위에 있는 readOnly = true가 먹히게 됩니다.
그 다음에 하나, 단 건 조회하는 거는

이렇게 하면 됩니다.
그럼 끝! 개발이 완료됩니다. 잘 보시면 이 상품 서비스(ItemService)는 이 상품 리포지토리(itemRepository)에 단순하게 위임만 하는 클래스에요. 그래서 정말 개발이 그냥 단순하게 끝나버리죠.

경우에 따라서는 이렇게 정말 위임만 하는 거에 대해서 만들 필요가 있을까? 에 대해서 고민해보실 필요는 있어요.
그래서 Controller에서 ItemRepository에 바로 접근해서 써도 저는 크게 문제가 없다고 생각합니다.
그리고 상품 기능 테스트는 사실 여기는 로직이 복잡하지 않아서 여러분들께 복잡하지 않은데 또 하면 반복이니까, 뭐 실제 제가 개발할 때는 테스트를 작성하겠지만 강의에서는 따로 알려드릴 정보가 크게 없으니까 생략하도록 하겠습니다.
자 이렇게 상품쪽은 다 봤구요.
이제 다음에는 진짜 핵심인 주문 도메인을 개발해보겠습니다.
'스프링 > 실전! 스프링 부트와 JPA 활용1' 카테고리의 다른 글
| 주문 리포지토리 개발 (0) | 2024.05.04 |
|---|---|
| 주문, 주문상품 엔티티 개발 (0) | 2024.05.03 |
| 상품 리포지토리 개발 (0) | 2024.04.29 |
| 상품 엔티티 개발(비즈니스 로직 추가) (0) | 2024.04.29 |
| 회원 기능 테스트 (0) | 2024.04.27 |