당니의 개발자 스토리

상품 서비스 개발 본문

스프링/실전! 스프링 부트와 JPA 활용1

상품 서비스 개발

clainy 2024. 4. 29. 23:11

상품 서비스 개발

여러분 이번 시간에는 상품 서비스를 개발해 보겠습니다.

ItemService를 만들면 되구요.

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

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

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

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

자 그 다음에 조회하는 걸 만들어 볼게요.

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

그 다음에 하나, 단 건 조회하는 거는

이렇게 하면 됩니다.

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

경우에 따라서는 이렇게 정말 위임만 하는 거에 대해서 만들 필요가 있을까? 에 대해서 고민해보실 필요는 있어요.

그래서 Controller에서 ItemRepository에 바로 접근해서 써도 저는 크게 문제가 없다고 생각합니다.

그리고 상품 기능 테스트는 사실 여기는 로직이 복잡하지 않아서 여러분들께 복잡하지 않은데 또 하면 반복이니까, 뭐 실제 제가 개발할 때는 테스트를 작성하겠지만 강의에서는 따로 알려드릴 정보가 크게 없으니까 생략하도록 하겠습니다.

 

자 이렇게 상품쪽은 다 봤구요.

이제 다음에는 진짜 핵심인 주문 도메인을 개발해보겠습니다.