본문 바로가기
Spring/Spring boot

[SpringBoot] 스프링부트 Service

by s_hoonee 2023. 3. 9.
반응형

서비스는 컨트롤러와 레파지토리 사이에서 중간 단계로서, 비즈니스 로직을 처리하는 역할을 합니다. 스프링부트에서는 @Service 어노테이션을 사용하여 서비스를 정의하며, 다음과 같은 특징을 가지고 있습니다.

  1. 비즈니스 로직을 처리하는 역할을 수행합니다.

서비스는 컨트롤러에서 받은 요청을 처리하고, 레파지토리에서 반환한 데이터를 가공하여 결과를 반환합니다. 예를 들어, 게시판 서비스에서는 게시글 등록, 수정, 삭제 등의 작업을 수행합니다.

  1. 레파지토리와 컨트롤러 사이에서 중개 역할을 수행합니다.

서비스는 레파지토리에서 반환된 데이터를 가공하거나, 여러 개의 레파지토리를 동시에 사용하는 작업 등을 처리합니다. 또한, 컨트롤러와 레파지토리 사이에서 데이터의 전달과 반환을 관리합니다.

  1. 여러 개의 레파지토리를 사용하는 작업을 처리할 수 있습니다.

서비스는 여러 개의 레파지토리를 사용하여 데이터를 처리할 수 있습니다. 예를 들어, 게시판 서비스에서는 게시글 레파지토리와 댓글 레파지토리를 모두 사용하여 게시글과 댓글 데이터를 처리합니다.

  1. 트랜잭션 관리를 수행합니다.

서비스에서는 여러 개의 레파지토리를 사용할 수 있기 때문에, 트랜잭션 관리가 중요한 역할을 수행합니다. 스프링에서는 @Transactional 어노테이션을 사용하여 트랜잭션을 관리합니다.

컨트롤러에서는 서비스를 호출하여 비즈니스 로직을 처리하고, 뷰로 결과를 반환합니다. 이 때, 서비스에서는 레파지토리와 연동하여 데이터를 처리합니다. 예를 들어, 게시판 서비스에서는 게시글 등록 작업을 수행하는 메서드를 다음과 같이 정의할 수 있습니다.

@Service
public class BoardService {
    
    @Autowired
    private BoardRepository boardRepository;

    @Autowired
    private CommentRepository commentRepository;

    @Transactional
    public void addBoard(BoardDto boardDto) {
        Board board = new Board();
        board.setTitle(boardDto.getTitle());
        board.setContent(boardDto.getContent());
        board.setWriter(boardDto.getWriter());
        board.setRegDate(LocalDateTime.now());

        boardRepository.save