[Spring]서비스 계층과 트랜잭션

윤재열·2022년 2월 8일
0

Spring

목록 보기
19/72
post-custom-banner

기존 Article의 RestAPI구현에 Service계층을 추가해보자.

서비스란

  • 컨트롤러와 레파지토리의 사이에 위치하는 계층으로써 처리 업무의 순서를 총괄합니다.
  • 음식점을 예로 들면 웨이터에게 주문이 들어오면 이를 전달받은 쉐프가 요리를 총괄합니다. 이때 요리에 필요한 재료는 보조 요리사에게 가져오게 시킵니다.
  • 여기서 웨이터는 Controller, 쉐프는 Service, 보조요리사가 Repository가 됩니다.
  • 클라이언트로부터 주문을 받은 컨트롤러는 주문내용을 서비스에게 전달하고 서비스는 이를 받아서 정해진 레시피순서에따라 요리를 하는데 요리에 필요한 레포지토리에서 참고해서 가져와 준비해 줍니다.

트랜잭션과 롤백

  • 트랜잭션이란 모두 성공되어야 하는 일련의 과정을 뜻합니다.
  • 실패시 진행 초기 단계로 돌리는 것을 롤백이라 합니다.

서비스계층과 트랙잭션 실습

서비스 생성

  • 우선 articleApiController 클래스를 모두 주석처리해줍니다.

  • @autowired된 내용을 리파지토리가 아닌 서비스로 바꿔주겠습니다.

  • 새로 service라는 패키지를 만들고 ArticleService라는 클래스를 만들어 줍니다.

  • @Service어노테이션을 생성해줍니다.

  • 서비스 클래스에도 레파지토리와 협업할 수 있도록 필드로 추가해주고 @Autowired를 넣어줍니다.

Article목록 조회

  • 레파지토리가 아닌 서비스를 통해서 데이터를 가져오게합니다.index라는 메서드로 말이죠.
  • 이제 서비스의 index()메서드를 만들어 봅니다.
  • 잘 동작하는 것을 알 수 있습니다.

Article 단건(상세)조회

  • 상세 조회또한 서비스의 show메서드를 이용해 보겠습니다.
  • 리파지토리에 findById(id)인데 만약 값이 없으면 null을 뱉게 만들어 줍니다.
  • 역시 1번데이터 값을 뽑으려고하니 잘나옵니다.

Article생성

  • 3항 연산자를 이용하여 PostMapping을 만들어 줍니다.
  • create 메서드를 생성해줍니다.
  • 4번 아이디에 잘 등록된 것을 볼 수 있습니다.

Article 수정

  • 이와 같이 바꿔줍니다.
  • update메서드를 서비스에서 구현해봅니다.

Article 삭제

트랜잭션 맛보기

profile
블로그 이전합니다! https://jyyoun1022.tistory.com/
post-custom-banner

0개의 댓글