UL :)
UL의 개발 블로그
UL :)
전체 방문자
오늘
어제
  • 분류 전체보기 (220)
    • 일상 (1)
    • 회고록 (7)
    • ChatGPT 아카이빙 (0)
    • PS(Java) (114)
      • 백준 (37)
      • 인프런 강의 문제 (77)
    • Web (69)
      • Spring (18)
      • JPA (7)
      • JSP (9)
      • HTML5 (12)
      • CSS (19)
      • HTTP (0)
      • 보안 (2)
    • Language (5)
      • Java (3)
      • JS (1)
      • Python (1)
    • Git, GitHub (4)
    • Settings (18)
      • IntelliJ (7)
      • Eclipse (2)
      • VSCode (3)
      • Android Studio (1)
      • VMware (2)
      • Mac (0)
    • Etc (1)

블로그 메뉴

  • 홈
  • 태그

공지사항

인기 글

태그

  • TABLE 전략
  • @JoinColumn
  • BOJ
  • HttpMessageConverter
  • 1차 캐시
  • @ManyToOne
  • ViewName반환
  • 정렬
  • @PostMapping
  • produces
  • 백준
  • @RequestParam
  • SEQUENCE 전략
  • @Table
  • @GetMapping
  • ReturnValueHandler
  • ORM
  • consumes
  • 엔티티 매핑
  • 영속성
  • JPA
  • 영속성컨텍스트
  • 동일성보장
  • EntityManagerFactory
  • @Column
  • @Id
  • HandlerMethodArgumentResolver
  • 요청헤더
  • IDENTITY 전략
  • argumentresolver

최근 댓글

최근 글

티스토리

hELLO · Designed By 정상우.
UL :)

UL의 개발 블로그

DAO, DTO, VO, Repository, 뭐가 다른걸까?
Web/Spring

DAO, DTO, VO, Repository, 뭐가 다른걸까?

2022. 6. 7. 04:44

Entity

  • doamin 패키지
  • DB 테이블과 1:1로 매핑되는 객체
  • 데이터베이스 테이블내에 존재하는 컬럼만을 속성으로 가진다
  • 도메인 로직(속성 변경)만을 가지고 있어야 하고 서비스 로직은 가지고 있으면 안된다.

 

DAO(Data Access Object)

  • repository 패키지
  • DB의 데이터에 접근하기 위한 객체. 삽입, 삭제, 조회 등의 기능 수행
  • JPA에서의 Repository의 기능과 동일한 역할

 

DTO(Data Transfer Object)

  • dto 패키지
  • 각 계층간(Controller, View, Business Layer(Model)) 데이터 교환을 위한 객체
  • 로직을 가지지 않는 데이터 객체.
  • Getter와 Setter 메서드만 가진 클래스
  • 유효성 체크 애노테이션 사용하면 편리
    • https://itcoin.tistory.com/499
implementation 'org.springframework.boot:spring-boot-starter-validation'

 

VO(Value Object)

  • dto 패키지
  • 불변, Read-Only 클래스
    • equals()와 hashcode()를 오버라이딩하는 것은 필수
  • Setter 성격을 가지고 있는 메서드는 가져서는 안되며 오로지 생성자로만 값을 초기화해야하고 Getter 성격의 메서드만 사용

 

Repository

  • 영구 저장소가 아닌, 객체의 상태를 관리하는 저장소
  • 인터페이스로 구현체를 따로 작성하면 도메인 계층, 아니면 서비스 계층이라고 할 수 있겠다. (?)

 

적시적소! 어디에 무얼 써야하나

 

  • DTO: 계층 간 데이터 전달용
  • VO: 값을 갖는 도메인
  • Entity: DB와 매핑되는 용
  • Repository: = DAO, DB 접근용(CRUD)

 

참고한 글

https://velog.io/@maketheworldwise/DAO-DTO-VO-ENTITY

 

 

 

저작자표시 비영리 변경금지 (새창열림)

'Web > Spring' 카테고리의 다른 글

MapStruct 적용  (0) 2022.06.08
Controller와 Service 계층 간의 데이터 전달  (0) 2022.06.07
[Inflearn] 스프링 MVC (8) 웹 페이지 만들기  (0) 2022.03.07
[Inflearn] 스프링 MVC (7) HttpMessageConverter  (0) 2022.02.04
[Inflearn] 스프링 MVC (6) HTTP 응답  (0) 2022.01.31
    'Web/Spring' 카테고리의 다른 글
    • MapStruct 적용
    • Controller와 Service 계층 간의 데이터 전달
    • [Inflearn] 스프링 MVC (8) 웹 페이지 만들기
    • [Inflearn] 스프링 MVC (7) HttpMessageConverter
    UL :)
    UL :)
    백엔드 개발자를 목표로 달리고 있습니다🔥

    티스토리툴바