dTo / Controller, Service, Repository 란?

Dasole Kwon·2022년 5월 24일
0

항해99

목록 보기
14/47

DTO(Data Transfer Object)
데이터 저장 담당 클래스이다. Controller, Service, View처럼 계층 간의 데이터 교환을 위해 쓰인다. 로직을 갖고 있지 않으며 순수한 데이터 객체이며 getter, setter 메소드만을 갖고 있다.

  • 우리는 왜 DTO를 써야 할까?
    DTO를 쓰지 않으면, 통신의 횟수가 증가할 뿐 아니라 로직이 비효율적이 되기 때문이다. Entity가 아닌 DTO를 전달함으로써 각 레이어 간 역할을 분리할 수 있기 때문이다. 또 다른 이점은, 데이터를 전송하기 위한 직렬화 메커니즘을 캡슐화하는 것이다. 이와 같이 직렬화를 캡슐화함으로써, DTO는 이 로직을 코드에서 제외하고,
    원하는 경우 직렬화를 변경할 수 있는 명확한 지점을 제공한다.

Controller(web)

  • 기능
    • 해당 요청 url에 따라 적절한 view와 mapping 처리
    • @Autowired service 를 통해 Service의 method를 이용
    • 적절한 RsponseEntity(DTO)를 body에 담아 Client에 반환
  • @Controller vs @RestController
    Controller
    - API와 view를 동시에 사용하는 경우에 사용
    - 대신 API 서비스로 사용하는 경우는 @ResponseBody를 사용하여 객체를 반환
    - View(화면) return이 주목적
    RestController
    - view가 필요없는 API만 지원하는 서비스에서 사용.
    - @ResquestMapping 메서드가 기본적으로 @ResponseBody 의미를 가정
    - data(json, xml 등) return이 주목적 : return ResponseEntity
    - 즉, @Controller + @ResponseBody

Service

  • 컨트롤러와 리포지토리 사이의 미들웨어
  • Model이 테이터페이스에서 받아온 데이터를 전달받아 가공하는 역할
  • Controller에서 전달받은 사용자의 요청사항에 알맞게 데이터를 가공해서 데이터베이스로 전달하거나, 데이터베이스에서 데이터를 전달받아 가공하여 유저에게 전달하는 역할
  • DB 정보가 필요할 때는 Repository에게 요청

Repository

  • DB 관리(연결, 해제, 자원 관리)
  • DB에 CRUD의 명령을 실행하게 만드는 인터페이스
  • '저장소'라는 뜻을 가진 단어로 JPA에서 Repository 인터페이스를 생성 후, JpaRepository<Entity, 기본키 타입>을 상속받으면(extends하면) 기본적인 Create, Read, Update, Delete가 자동으로 생성됨

참조:
링크텍스트
링크텍스트

0개의 댓글