📌 DTO (Data Transfer Object)
- view와 통신하기 위한 클래스
- getter와 setter 메서드 만을 가진 클래스
- db에서 데이터를 받고 이 데이터를 다시 service 나 controller 등으로 넘겨주는 역할
- 세부적인 로직을 갖고 있지 않는 db로부터 받을 데이터들을 어떤 방식, 타입 등으로 보낼 것인지 정의해 놓는 클래스 또는 순수한 데이터 객체라고 의미하면 된다고 생각한다.
📌 DAO (Data Access Object)
- repository 패키지로 실제로 db에 접근하여 data를 CRUD 하는 객체
- service와 db를 연결해주는 역할을 한다.
- 인터페이스와 이에 대한 구현체를 만들어서 구현체에 CRUD 관련 기능을 구현하고, 이를 DI(Dependency Injection) 해주는 방식으로 사용된다.
- DAO의 경우 db와 연결할 Connection까지 설정되어 있는 경우가 많아, 현재 많이 쓰이는 Mybatis 등을 사용할 경우 커넥션 풀까지 제공되고 있기 때문에 DAO를 별도로 만드는 경우는 드물다.
📌 VO (Value Object)
- VO는 DTO와 혼용해서 쓰이긴 하지만 미묘한 차이가 있다. VO는 값 Object로써 값을 위해 쓰입니다. 자바는 값 타입을 표현하기 위해 불변 클래스를 만들어서 사용하는데, 불변이라는 것은 readOnly 특징을 가집니다.
- DTO와 VO의 공통점은 넣어진 데이터를 getter를 통해 사용하므로 주목적은 같습니다. 하지만 DTO의 경우는 가변의 성격을 가진 클래스이다. 그에 반해 VO는 불변의 성격을 가졌다는 차이점이 있습니다.
'Spring Boot' 카테고리의 다른 글
[Spring Boot] @RequestParam & @PathVariable 알아보기 (0) | 2023.06.16 |
---|---|
[SpringBoot] TDD(TestCode) & JUnit 알아보기 (0) | 2023.05.25 |
[Spring Boot] Controller & RestController 알아보기 (0) | 2023.05.21 |
[Spring Boot] @PathVariable 이란 ? (0) | 2023.05.21 |
[Spring Boot] 패키지 구조 및 정리 (0) | 2022.08.12 |