본문 바로가기
Spring/Spring boot

Service가 필요한 이유 ?

by java나유 2022. 10. 26.

Service는 스프링에서 데이터 처리를 위해 작성하는 클래스이다.

 

서비스(Service)가 필요한 이유

  1. 모듈화
  2. 보안
  3. 엔티티 객체와 DTO객체의 변환

 

1.모듈화

어떤 컨트롤러가 여러개 리포지터리를 이용해서 데이터를 조회하고 가공하고 리턴할 때, 이런 기능을 서비스로 만들어 두면 컨트롤러에서는 해당 서비스를 호출해서 사용하면 된다.

 서비스를 만들지 않고, 컨트롤러에서 구현하려 한다면 모든 컨트롤러가 동일한 기능을 중복으로 구현해야한다.

=>서비스는 모듈화를 위해 필요하다

 

2. 보안

컨트롤러는 리포지터리 없이 서비스를 통해서만 데이터베이스에 접근하도록 하는것이 보안에 좋다.

why? 해커가 컨트롤러를 해킹해서 제어할 수 있어도, 리포지터리에 직접 접근할 수는 없다.

 

3. 엔티티 객체와 DTO객체의 변환

엔티티 클래스는 데이터베이스와 직접 맞닿아 있는 클래스기 때문에 컨트롤러나 타임리프 같은 템플릿 엔진에 전달해 사용하는것은 좋지 않다. 컨트롤러나 타임리프에서 사용하는 데이터 객체는 속성을 변경하여 비즈니스적인 요구를 처리해야 하는 경우가 많은데 엔티티를 직접 사용해 속성을 변경하면 테이블 컬럼이 변경되서 엉망이 될 수 있다.

=>엔티티 클래스는 컨트롤러에서 사용할 수 없게 설계해야한다. 이렇게 하려면 DTO(Data Transfer Object)클래스가 필요하다. 또, 엔티티 객체를 DTO 객체로 변환하는 작업도 필요하다. 그럼 엔티티를 DTO객체로 변환하는 일은 어디서 할까.

바로 서비스이다. 서비스는 컨트롤러와 리포지터리의 중간자 입장에서 엔티티 객체와 DTO객체를 서로 변환해 양방향에 전달하는 역할이다.

 

출처:https://wikidocs.net/161220

728x90

댓글