728x90

JPA를 사용하면서 DTO랑 Entity를 따로 둘 필요가 있나? 라는 의문점이 생겨 간단하게 정리한다.

1. Entity : 실제 DB테이블과 1:1로 매핑 되는 클래스

  • DB테이블에 존재하는 컬럼만을 속성(필드)로 가져야 한다.
  • 최대한 해당 클래스 안에서 필요한 로직을 구현 (외부에서 getter 사용을 최소화)
  • setter 금지 (데이터 값이 무분별하게 바뀌면 위험)

2. DTO : 데이터 전송 객체(Data Transfer Object)이라는 의미라는 가졌으며, 주로 비동기 처리에 사용한다.

  • DB데이터를 서비스나 컨트롤러에 데이터를 전송할 때 사용된다.
  • getter/setter 메소드만 가진다. (로직X)

3. VO : DTO와 같은 개념이지만 read only 속성을 가진다.

  • 특정한 비즈니스 값을 담는 객체

+ Recent posts