https://velog.io/@ha0kim/DAO-DTO-VO-%EC%B0%A8%EC%9D%B4
https://dkswnkk.tistory.com/500
https://choitaetae.tistory.com/97
DAO는 DB의 data 에 접근하기 위한 객체로 직접 DB에 접근하여 데이터를 삽입,삭제,조회등 조작할 수 있는 기능을 수행함
Database 접근을 하기 위한 로직과 비지니스 로직을 분리하기 위해 사용함
DAO의 경우에는 DB와 연결할 Connection 까지 설정되어 있는 경우가 많음
Mybatis를 사용하면 커넥션풀까지 제공되고 있기 때문에 DAO를 별도로 만드는 경우는 드뭄
DB의 data에 접근하기 위한 객체이다. DB에 접근하기 위한 로직을 분리하기 위해 사용한다.
직접 DB에 접근하여 data를 삽입, 삭제, 조회 등 조작할 수 있는 기능을 수행한다.
MVC 패턴의 Model에서 이와 같은 일을 수행한다
DTO는 계층간 데이터 교환을 위한 자바 빈즈(Java Beans)를 의미함
DTO는 로직을 가지지 않는 데이터 객체이고 getter/setter 메소드만 가진 클래스를 의미함
DB의 데이터를 서비스나 컨트롤러로 보낼 때 사용하는 객체를 말함
Entity 를 DTO 형태로 변환 후 사용함
DTO와 달리 VO는 Read-Only 속성을 가지고 있음
자바에서 단순히 값 타입을 표현하기 위해 불변 클래스를 만들어 사용함
VO는 getter만을 가지고 있어 수정이 불가능함
VO의 핵심 역할은 equals()와 hashcode() 를 오버라이딩 하는것임
VO내부에 선언된 필드의 모든 값들이 VO객체마다 값이 같아야 똑같은 객체라고 판별함
Entity 클래스는 실제 DataBase의 테이블과 1 : 1로 매핑 되는 클래스로, DB의 테이블내에 존재하는 컬럼만을 속성(필드)으로 가져야 함
Entity 클래스는 상속을 받거나 구현체여서는 안되며, 테이블내에 존재하지 않는 컬럼을 가져서도 안됨
- 용도
DTO : 계층 간 데이터 전달
VO : 값 자체를 표현
- 동등 결정
DTO : 속성값이 모두 같아도 같은 객체가 아닐 수 있음
VO : 속성값이 모두 같으면 같은 객체
- 가변 / 불변
DTO : setter 존재시 가변, 비 존재시 불변
VO : 불변
- 로직
DTO : getter / setter 이외의 로직이 불필요함
VO : getter / setter 이외의 로직을 가질 수 있음
- 질문 : DAO , DTO , VO , Entity 차이를 설명해줘
DAO, DTO, VO, Entity는 모두 소프트웨어 개발에서 데이터를 다루는 방식에 대한 용어입니다. 각각의 용어는 다음과 같이 정의됩니다.
DAO(Data Access Object)
데이터베이스나 다른 영속 저장소에 접근하는 객체를 의미합니다.
데이터 접근 계층을 구성하는 구성 요소 중 하나입니다.
DAO는 데이터베이스와 직접 상호작용하며, 데이터베이스에 대한 CRUD(Create, Read, Update, Delete) 작업을 수행합니다.
DTO(Data Transfer Object)
서로 다른 계층 또는 서비스 간 데이터 전송을 위한 객체를 의미합니다.
데이터 전송 계층을 구성하는 구성 요소 중 하나입니다.
DTO는 보통 단순한 자료형으로 이루어져 있으며, 한 계층에서 다른 계층으로 데이터를 전달할 때 사용됩니다.
VO(Value Object)
데이터 전달을 위해 사용되는 객체를 의미합니다.
DTO와 유사하지만, 불변 객체(immutable object)로서, 한 번 생성된 이후에는 변경이 불가능합니다.
주로 비즈니스 로직 계층에서 사용됩니다.
Entity
데이터베이스의 엔터티(Entity)를 표현하는 객체를 의미합니다.
도메인 계층을 구성하는 구성 요소 중 하나입니다.
엔터티는 보통 데이터베이스의 테이블과 1:1로 매핑되며, 객체 지향 프로그래밍에서는 클래스로 표현됩니다.
엔터티는 데이터베이스의 데이터를 객체화한 것으로, 데이터베이스와 직접 상호작용하며, CRUD 작업을 수행합니다.
요약하면, DAO는 데이터베이스에 대한 작업을 처리하는 객체, DTO는 계층 간 데이터 전송을 위한 객체, VO는 비즈니스 로직 계층에서 사용되는 불변 객체, Entity는 데이터베이스의 데이터를 객체화한 객체입니다. 이들은 각각의 역할과 책임을 가지고, 소프트웨어 개발에서 다양한 목적으로 사용됩니다.