Java

[Spring] DAO, DTO, VO, Record 개념 및 차이점

솔솔 2023. 4. 17. 17:00
반응형

DAO 의 경우 데이터 엑세스를 위한 객체

DTO, VO, RECORD 의 경우 데이터를 표현하기 위한 객체

 

DAO ( Data Access Object )

  • 데이터 액세스 객체
  • DB에서 데이터를 가져오거나 DB에 데이터를 저장하는 등의 작업을 수행하는 객체
  • 비즈니스 계층과 DB 간의 인터페이스 역할

 

DTO ( Data Transfer Object )

  • 데이터 전송 객체
  • 데이터를 효율적으로 전송하기 위한 객체
  • 일반적으로 DB에서 가져온 데이터를 다른 계층에서 사용하기 적합한 형식으로 변환하여 전송하는데 사용
  • DTO 속성은 getter / setter 메서드로 구성
  • 데이터 전송에만 사용

 

VO ( Value Object )

  • 값 객체
  • 데이터의 불변성을 보장하고 상태를 가지지 않음
  • 보통 DB의 한 행 또는 여러 행을 나타내는데 사용
  • DTO와 유사하지만 DTO는 데이터 전송을 위해 사용, VO는 데이터의 불변성을 유지하기 위해 사용
  • VO는 불변으로 getter 메서드만 포함 (Read-Only) 

요약해보자면 DB 에 접근할 때는 DAO를 사용하고, 데이터를 전송할 땐 DTO를 사용하고, VO는 데이터의 불변성을 보장해야할 때 사용하면 된다.

 

그럼 Record는 뭘까?

 

Record

  • Java 14부터 도입된 클래스의 일종
  • 불변 데이터를 표현하는데 사용
  • 클래스이므로 interface 구현, extends 확장 가능
  • 생성자, getter 메서드, equals(), hashCode() 메서드를 컴파일러가 자동 생성 해줌으로 서 코드 간결
  • 불변이므로 setter 메서드는 생성되지 않는다.
public record Member (String userId, String userName, int age) {}

 

반응형