반응형
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) {}
반응형
'Java' 카테고리의 다른 글
@Transactional 란? (0) | 2023.05.01 |
---|---|
[Spring] Controller Request 값 @valid 이용하여 검증하기 (2) | 2023.04.16 |
CI/CD란? 지속적 통합, 지속적 제공(배포) (0) | 2021.09.01 |
[Spring Boot] /index.html 파일 static 폴더가 아닌 templates 폴더에서 호출되게 하는 방법 (0) | 2021.06.24 |
[Spring Boot] SpringBootServletInitializer 상속하는 이유 (0) | 2021.06.24 |