[Spring] Entity VS DTO VS VO

ggamang·2023년 4월 5일
0

JAVA&Spring

목록 보기
21/27

Entity

도메인 로직이 포함된 객체로 데이터베이스에 저장되고 관리된다

  • 데이터베이스에 저장되는 객체
  • 식별자를 갖는다
  • 데이터 저장 및 검색을 위한 메서드를 제공
@Entity
@Table(name = "employees")
public class Employee {
 
    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    private Long id;
 
    @Column(name = "name")
    private String name;
 
    @Column(name = "salary")
    private double salary;
}

DTO(Data Transfer Object)

데이터 전달을 위한 객체로 불변성을 가지며 로직을 포함하지 않는다

  • 레이어간 데이터 교환을 위한 객체
  • 데이터만 포함하고 로직은 포함하지 않는다
  • 불변성을 갖고, getter/setter 메서드만 갖는다
  • API, 서비스 호출 시 사용한다
@Getter
@Setter
public class EmployeeDTO {
 
    private Long id;
    private String name;
    private double salary;
}

VO(Value Object)

도메인의 특정 값을 나타내며 비교나 동등성 체크 등에 사용된다

  • 불변성을 갖고, equals()와 hashcode()를 오버라이딩한다
  • 도메인 모델링에 사용된다
public class Address {
 
    private String street;
    private String city;
    private String state;
    private String zipCode;
 
    public Address(String street, String city, String state, String zipCode) {
        this.street = street;
        this.city = city;
        this.state = state;
        this.zipCode = zipCode;
    }
}

0개의 댓글