학원 강의나 패캠 강의에서 프로젝트 만들 때 DTO, DAO라는 폴더에 DTO클래스, DAO클래스를 계속 만드는데 맨날 코드 보고 따라만 치니까 '그래서 DAO, DTO가 뭔데?'라는 생각이 들었다.
DAO는 Data Access Object의 약자이다. 데이터에 접근하는 객체, 즉 데이터 베이스에 접근하는 객체이다.
왜 굳이 db에 접근하는 객체를 만든걸까?
남궁성 쓰앵님의 스프링 강의를 보면 가장 많이 하는 말이 '관심사의 분리'이다.
클래스 하나에 db에 접근하는 객체, db를 생성하는 객체, 기능을 구현하는 객체 등 모든 객체를 다 넣어버리면 가독성도 떨어지고, 코드도 길어지고, 내 시력도 나빠지고, 성격도 나빠질 것이다.
이렇게 객체마다 역할을 분리 및 명확하게 하기 위해 DAO라는 객체(클래스)를 따로 만들었고, DAO 객체를 통해 DB에 있는 테이블의 데이터를 Select(Read) || Insert(Create) || Delete(Delete) || Update(Update) 한다.
DAO는 테이블과 1:1로 작성된다 (1 테이블 1 DAO 랄까나... 1인 1 닭 같은 느낌). 컨트롤러는 DAO를 통해서 DAO를 다루게 된다. 철저한 분업을 하고 있다.
DTO는 Data Transfer Object의 약자이다. 데이터 교환 객체, 즉 데이터 교환을 위한 자바 빈즈 혹은 객체를 뜻한다.
DTO는 DAO와 달리 CRUD를 쿼리를 적지 않는다. DTO에는 private으로 선언한 db 데이터들, getter와 setter 메소드, 생성자 등의 데이터를 다루기 위한 문법만 적혀있다. DTO에 db의 데이터를 정의해놓으면 DAO가 홀랑 가져다가 쓴다.
제대로 파면 이것보다 더 긴 글을 적을 수 있겠지만 글의 길이가 뭐가 중요한가.
내가 이 내용을 정리해서 내 머리에 저-장 하면 되는거지.
정리 끝-
댓글 영역