DAO - DTO 차이점 생각해보기

 

  • 역할:
    • DTO: 데이터를 전송하는 역할
    • DAO: 데이터를 저장하고 접근하는 역할
  • 구성:
    • DTO: 단순한 데이터 홀더 (필드, getter/setter)
    • DAO: 데이터베이스 연산을 수행하는 메서드 (CRUD, 쿼리 실행)
  • 위치:
    • DTO: 계층 간 데이터 교환에 사용 (주로 프레젠테이션 계층과 비즈니스 계층 간)
    • DAO: 비즈니스 계층과 데이터베이스 계층 간의 인터페이스
  • 변경성:
    • DTO: 불변(immutable) 객체로 설계될 수 있음
    • DAO: 상태가 변할 수 있는 객체 (데이터베이스 연산에 따라)
  • 사용 목적:
    • DTO: 네트워크 통신, API 응답/요청 등에서 데이터 전송을 위해 사용
    • DAO: 데이터베이스 연산과 관련된 로직을 캡슐화

 

1. DTO (Data Transfer Object)

목적:

  • DTO는 계층 간 데이터 전송을 위한 객체입니다.
  • 주로 프레젠테이션 계층과 비즈니스 계층 간에 데이터를 주고받을 때 사용됩니다.
  • 네트워크 통신이나 API 호출에서 데이터를 담아서 전송하는 용도로 사용됩니다.

특징:

  • 단순한 데이터 구조: DTO는 주로 필드와 getter/setter 메서드만을 가지고 있는 단순한 클래스입니다.
  • 불변성: DTO는 불변(immutable) 객체로 설계되는 경우가 많습니다. 데이터를 안전하게 전송하고 수정할 수 없도록 합니다.
  • 직렬화 가능: 대부분의 경우 직렬화 가능한 객체로 설계되어 네트워크를 통해 데이터를 전송하거나 파일에 저장할 수 있습니다.
  • 데이터 캡슐화: 데이터의 전송을 위한 순수한 데이터를 캡슐화합니다.

 

2. DAO (Data Access Object)

목적:

  • DAO는 데이터베이스나 다른 영구 저장소에 접근하기 위한 객체입니다.
  • 주로 데이터베이스 조작(읽기, 쓰기, 업데이트, 삭제)과 관련된 로직을 캡슐화합니다.
  • 비즈니스 계층과 데이터베이스 계층 간의 추상화를 제공합니다.

특징:

  • 데이터베이스 연동: DAO는 데이터베이스 연산을 수행하는 메서드를 포함하고 있으며, SQL 쿼리 또는 JPA/Hibernate와 같은 ORM(Object-Relational Mapping) 프레임워크를 사용합니다.
  • 캡슐화: 데이터베이스와의 상호 작용을 캡슐화하여, 데이터베이스 접근 코드를 비즈니스 로직에서 분리합니다.
  • 인터페이스 기반: DAO 패턴은 인터페이스를 사용하여 데이터 접근 로직을 정의하고, 구체적인 구현체는 이를 구현합니다.
  • 트랜잭션 관리: 트랜잭션을 관리하고 데이터베이스 연결을 처리합니다.

 

결론

주고 받을때는 DTO - 조작할 때는 DAO

 

'CS' 카테고리의 다른 글

lombok AllArgsConstructor를 안쓰는 이유  (0) 2024.10.08
IP 와 Port 그리고 Socket  (0) 2024.08.08
delete method는 form-data를 못쓴다.  (0) 2024.08.07
Process 와 Thread  (0) 2024.06.10
세션과 토큰 쿠키  (1) 2024.06.10