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
}

🧾 실무 예시:

  1. 사용자가 입력한 데이터를 UserDto에 담아 서버로 전송
  2. 서버는 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
반응형

+ Recent posts