[Spring] 서비스(Serive)가 필요한 이유

세상을 바꾸는 개발자·2023년 3월 29일
0

서비스란

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

서비스가 필요한 이유

모듈화

서비스를 만들지 않고 리포지터리를 사용할 경우 해당 기능을 필요로 하는 모든 컨트롤러가 동일한 기능을 중복으로 구현해야 한다. 따라서 서비스는 모듈화를 위해서 필요하다. 예를 들어 데이터를 조회하는 기능을 서비스로 만들어 두면 컨트롤러에서는 해당 서비스를 호출하여 사용하면 된다.

보안

컨트롤러가 서비스를 통해서만 데이터베이스에 접근하도록 하면, 해커 해킹을 통해 컨트롤러를 제어할 수 있게 되더라도 리포지터리를 직접 접근할 수 없게 된다.

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

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

이러한 이유로 엔티티 클래스는 컨트롤러에서 사용할수 없게끔 설계하는 것이 좋다. 그러기 위해서는 대신 사용할 DTO(Data Transfer Object) 클래스가 필요하다. 그리고 엔티티 객체를 DTO 객체로 변환하는 작업도 필요하다. 서비스는 컨트롤러와 리포지터리의 중간자적인 입장에서 엔티티 객체와 DTO 객체를 서로 변환하여 양방향에 전달하는 역할을 한다.

profile
초심 잃지 않기

0개의 댓글