Repository, DTO, Entity(Domain), VO, DB

민찬홍·2023년 11월 20일

Spring

목록 보기
1/16

Controller

  • 주로 사용자의 요청을 처리한 후 지정된 뷰에 모델 객체를 넘겨주는 역할, 사용자의 요청이 진입하는 지점으로 요청에 따라 어떤 처리를 할지 결정을 Service에 넘겨줌

  • Client의 요청을 받았을 때 그 요청에 대해 실제 업무를 수행하는 Service를 호출하고(클라이언트가 보낸 데이터가 있다면 호출 시 전달하기 쉽게 가공), 모델의 업무 수행이 완료되면 그 결과를 바탕으로 화면을 구성하도록 View에 전달함

Service

  • 비즈니스 로직을 수행하고 DB에 접근하는 DAO를 이용해서 결과값을 받아와 처리한 내용을 Controller에 넘겨줌 (Controller의 요청을 받아 알맞은 정보를 가공하여 Controller에게 재전달)

  • Repository를 상속받아 관련 함수 사용 가능

DAO (Data Access Object)

  • DB에 접근하기 위한 객체
    • 영속성 객체를 숨기지 않음(구현체가 인프라 계층에 있다는 것을 숨기지 않음)
    • 서비스와 DB를 연결하기 위한 다리
    • JPA는 매우 적은 코드로 DAO를 구현할 수 있도록 해줌

Repository

  • DB에 접근하기 위한 객체이자 객체의 상태를 관리하는 저장소로 영구저장소가 아닌 객체의 상태를 관리하는 저장소 (Entity에 의해 생성된 DB에 접근하는 메서드를 사용하기 위한 인터페이스)

    • 인프라 계층이 아닌 도메인 계층
    • 영속성 객체임을 숨김. 구현체가 인프라 계층에 숨겨져 있음
    • JPA를 상속받음으로써 기본적인 CRUD가 가능해짐

DTO (Data Transfer Object)

  • 계층간 데이터 교환을 위해 사용되는 객체
    • 데이터 교환만을 위해 사용하므로 로직을 가지지 않음, Getter/Setter 메소드만 갖는다.
    • 뷰에서 컨트롤러로 넘어오는 데이터를 담거나, 컨트롤러에서 서비스로 넘기는 데이터를 담을 때 사용

Entity (Domain)

  • DB 테이블 내에 존재하는 Column만을 속성으로 갖는 클래스 (DB 테이블과 매핑되며 실제 DB에 저장되는 내용들을 구현하는 클래스)
    • PK(id)로 구분
    • 상속을 받거나 구현체여서는 안됨
    • Setter를 사용하면 안됨

DB

VO (Value Object)

  • 값 그 자체를 표현하는 객체
    • 로직을 포함할 수 있음
    • 객체의 불변성을 보장함(객체의 정보가 변경되지 않음)
profile
백엔드 개발자를 꿈꿉니다

0개의 댓글