August 12, 2024 August 13, 2024
Service
PostController에서 PostRepository에 직접 접근해 포스트 목록 데이터를 조회함.
- 대부분의 spring boot 프로젝트에선 컨트롤러로 직접 호출하지 않고 중간에 서비스를 두어 처리함.
<aside>
💡
MVC 패턴
</aside>
Service가 필요한 이유
복잡한 코드를 모듈화 할 수 있다.
- 컨트롤러 A가 어떤 기능을 수행하기 위해 리포지터리 C의 메서드 a, b, c를 순서대로 실행 가정
- 컨트롤러 B도 동일한 기능을 수행해야 함
→ A,B 컨트롤러가 C 리포지터리의 메서드 a, b, c를 호출해 사용하는 중복된 코드 발생
C 리포지터리의 메서드 a, b, c를 호출해 사용 ← 서비스로 만듦 ← 서비스를 컨트롤러에서 호출에서 사용
DTO를 사용하는 이유
엔티티 객체를 DTO 객체로 변환할 수 있다
- 엔티티 클래스 = db와 직접 맞닿아 있는 클래스
- Entity를 데이터를 전달하는 클래스로 사용하면 안됨
- 민감한 데이터 노출 위험
- Post, Comment를 대신해 사용한
DTO(Data Transfer Object) 클래스
필요
- 서비스는 중간에서 엔티티 객체와 dto 객체를 서로 변환하여 양방향에 전달하는 역할을 함.
- 클라이언트와 서버가 데이터를 주고받을 때 사용하는 객체