DAO는 (data access object)의 약자로, database에 접근하는 역할을 하는 객체를 말한다.
프로젝트의 서비스 모델에 해당하는 부분과 데이터베이스를 연결하는 역할을 하며 데이터의 CRUD 작업을 시행하는 클래스입니다. 즉, DAO는 데이터에 대한 CRUD 기능을 전담한 오브젝트를 의미하는 것이다.
이를 사용하는 사람은 자신에게 필요하거나 사용하려는 인터페이스를 DAO에게 넘겨주고 DAO는 이 인터페이스를 구현한 구현체를 사용자가 편리하게 사용할 수 있도록 반환해줍니다.
그렇다면, DAO를 사용하는 이유가 무엇일까?
DTO는 Data Transfer Object의 약자로, 데이터를 전달하기 위한 객체입니다.
여러 레이어(Layer)간 데이터를 주고 받을 때 사용할 수 있는데 주로 View와 Controller 사이에서 활용된다.
DTO는 getter / setter 메소드를 포함한다. 하지만, 이외의 다른 비즈니스 로직은 포함하지 않는다.
DTO는 어떻게 구현하느냐에 따라 가변 객체로 활용할 수도 있고 불변 객체로 활용할 수도 있다.
DTO의 목적은 데이터의 전달이다. 읽고 쓰는 것이 모두 허용되는 점이 가능하고, 일회성으로 사용되는 성격이 강하다!
장점으로는 엔터티 객체의 범위를 한정 지을수 있기 때문에 좀 더 안전한 코드를 작성할 수 있고, 화면과 데이터를 분리하려는 취지에 부합한다!
DTO 사용의 단점은 ENTITIY와 유사한 코드를 중복으로 개발, ENTITY객체를 DTO로 변환하거나 DTO 객체를 ENTITY 객체로 변환하는 과정이 필요하다