DAO와 DTO?

Seculoper·2021년 2월 13일
0

드디어 DAO/DTO에 관해 배워볼 시간이다!
이전편의 JDBC에 대한 지식만 있다면, 충분히 알아들을 수 있다.

0. DAO/DTO 개념

Data Acess Object와 Data Transform Object의 약자로, 데이터를 다루는 방법중 하나이다.
DAO/DTO가 하나의 기술(?)처럼 여겨지는 경우가 있는데, 사실 기술이라기 보단 데이터 작업 관련 디자인 패턴이다.

JDBC를 기반으로 데이터 작업을 할 수 있는 방법들에는 여러가지가 있는데, 그 중 한가지 방법인 것이다.
따라서 추가적으로 어떤 기능을 더 사용한다라기 보다는,
그냥 좀더 효율적으로 코드를 작성하는 방법이라고 보면 된다.

그럼 각각의 개념에 대해 좀더 자세히 알아보자.


1. DTO란?

이름 그대로 Data를 Transform하는 Object이다.

앞선 JDBC에서도 설명했듯이, DB의 데이터는 코드 상에서 그냥 사용할 수 없고 무언가 담을 틀이 필요하다.
data를 변환해줄 객체가 필요한데, 그것이 바로 DTO이다.
User, Team 클래스가 이에 해당한다.

DB의 테이블을 그대로 본따온 것 이므로, POJO로 작성해야한다.

public class UserDto {
   private int id;
   private String name;
   
   /*
    * get/set 메소드
    */
    
    /* toString 메소드 */
}

2. DAO란?

이것도 이름대로 Data에 Acess하는 Object이다.
해당 객체는 Spring JDBC와 동일하며, 데이터를 조회/수정하는 기능을 제공한다.
CRUD 메소드를 만들어서 간편하게 DAO 객체를 통해 사용할 수 있게끔 하는 구조이다.

대략 다음과 같은 형식으로 작성된다.

public class UserDao {
   /* Template 필드들 */
   
   /* get/set 메소드들 */
   
   public List<UserDto> findAll() {...};
   
   public UserDto findById(int id) {...};
   
   public int insert(UserDto user) {...};
   
   public int update(UserDto user) {...};
   
   public int deleteById(int id) {...};
}

설명은 이것이 끝이다.사실 구현하는 것도 앞서 배운 JDBC와 동일하다.
그저 이쁘게 잘 객체화해놓은 것 뿐...
그럼 다음 편은 바로 구현을 해보도록 하자.

profile
보안이 취미인 개발자(수학자)입니다.

0개의 댓글