728x90
반응형
🗃️ 1. DAO란?
DAO (Data Access Object)
→ 데이터베이스에 접근하는 역할
- DB와 직접 통신하는 클래스
- SQL, JPA, Mapper 등을 통해 DB 데이터를 가져오거나 넣는 책임을 가짐
- 비즈니스 로직과 분리되어 코드의 책임이 명확해짐
public class UserDao {
public void save(User user) {
// DB insert 로직
}
public User findById(Long id) {
// DB select 로직
}
}
📦 2. DTO란?
DTO (Data Transfer Object)
→ 계층 간 데이터 전달용 객체
- 컨트롤러 ↔ 서비스 ↔ DAO 사이에서 데이터를 전달함
- 순수 데이터만 포함 (로직 없음)
- Getter/Setter만 있는 클래스
public class UserDto {
private String name;
private String email;
// getter / setter
}
🧾 실무 예시:
- 사용자가 입력한 데이터를 UserDto에 담아 서버로 전송
- 서버는 DTO를 받아 DAO를 통해 DB에 저장
🔐 3. VO란?
VO (Value Object)
→ 불변의 값을 나타내는 객체
- DTO와 비슷하지만 값이 한 번 생성되면 변경 불가
- setter()가 없고, 생성자로만 값 설정
- 주로 equals(), hashCode()가 중요
public class Money {
private final int amount;
public Money(int amount) {
this.amount = amount;
}
public int getAmount() {
return amount;
}
}
🔍 DAO / DTO / VO 차이 비교표
항목DAODTOVO
| 역할 | DB 접근 담당 | 계층 간 데이터 전달 | 불변 값 표현 |
| 포함 내용 | DB 로직 | 순수 데이터 | 불변 데이터 |
| 메서드 | 쿼리/비즈니스 연동 | getter/setter | getter only |
| 변경 가능성 | O | O | ❌ |
✅ 마무리 요약
- DAO: DB와 대화하는 친구
- DTO: 데이터를 옮겨주는 메신저
- VO: 한 번 정해지면 변하지 않는 값 객체
728x90
반응형