Service가 필요한 이유

jhin·2023년 3월 30일
0

Web

목록 보기
6/7

Service가 필요한 이유


모듈화

예를들어 어떤 Controller가 여러개의 Repository를 사용하여 data를 조회한후 가공하여 return한다고 가정해 보자. 이러한 기능을 Service로 만들어 두면 Controller에서는 해당 Service를 호출하여 사용하면 된다. 하지만 Service로 만들지 않고 Controller에서 구현하려 한다면 해당 기능을 필요로 하는 모든 Controller가 동일한 기능을 중복으로 구현해야 한다. 이러한 이유로 Service는 모듈화를 위해서 필요하다.

보안

Controller는 Repository 없이 Service를 통해서만 DB에 접근하도록 구현하는 것이 보안상 안전하다. 이렇게 하면 어떤 해커가 해킹을 통해 Controller를 제어할 수 있게 되더라도 Repository에 직접 접근할 수는 없게 된다.

Entity 객체와 DTO 객체의 변환

Entity Class는 DB와 직접 맞닿아 있는 Class이기 때문에 Controller나 Thymeleaf 같은 template engine에 전달하여 사용하는 것은 좋지 않다. Controller나 Thymeleaf에서 사용하는 data 객체는 속성을 변경하여 비즈니스적인 요구를 처리해야 하는 경우가 많은데 Entity를 직접 사용하여 속성을 변경한다면 테이블 Column이 변경되어 엉망이 될수도 있기 때문이다.

이러한 이유로 Entity Class는 Controller에서 사용할수 없게끔 설계하는 것이 좋다. 그러기 위해서는 Entity Class 대신 사용할 DTO(Data Transfer Object) Class가 필요하다. 그리고 Entity 객체를 DTO 객체로 변환하는 작업도 필요하다.

그러면 Entity 객체를 DTO 객체로 변환하는 일은 어디서 처리해야 할까? 그렇다. 바로 Service이다. Service는 Controller와 Repository의 중간자적인 입장에서 Entity 객체와 DTO 객체를 서로 변환하여 양방향에 전달하는 역할을 한다.


💡 Entity, DTO에 대해서 알고싶다면 클릭!

0개의 댓글