○ DAO(Data Access Object)
데이터에 접근을 목적으로 하는 객체.
리소스를 매우 크게 소모하는 커넥션 객체를 하나만 두고
여러 사용자가 DAO 인터페이스를 사용하여
필요한 데이터에 접근할 수 있도록 한다.
즉, Database 와 연계하여 처리할 프로그램을
규정화 해 둔 클래스를 의미한다.
○ DTO(Date Transfer Object)
데이터가 포함된 객체를 특정 시스템에서 다른 시스템으로
전달하는 작업을 처리하는 객체.
메소드 호출 횟수를 줄이기 위해 데이터를 담고 있는 객체이다.
즉, 데이터를 하나의 객체로 관리할 목적으로 만들어 둔 클래스의 객체를 의미한다.
setter 와 getter 메소드를 가지고 직렬화(Serializable)를 구현한다.
폼에서 입력된 데이터들은 하나의 DTO 객체로 변환될 수 있다.
일반적으로 하나의 데이터베이스 레코드를 저장하며
레코드와 같은 구조를 가지고 있는 경우가 많다.
하나의 레코드는 빈즈 클래스 하나로 매핑된다.
데이터베이스의 컬럼은 멤버 변수로 매핑된다.
(예.. 이름 따로 번호 따로 주소 따로가 아니라.. 이 셋을 한번에..?)
○ VO(Value Object)
Value Object 는 관계형 데이터베이스의 레코드에 대응되는 자바 클래스.
형태는 DB 레코드를 구성하는 필드들을 Value Object 의 Attribute 로 하고
해당 변수에 접근할 수 있는 setter / getter 메소드의 조합으로 형성된 클래스.
특성은 대체로 불변성이고 equals() 메소드를 통해 비교할 경우
객체를 구성하고 있는 모든 값을 비교해야 한다.
DTO 와 유사한 개념이지만, 특정 비즈니스 로직만 전달하는 것으로
이해하는 것이 구분에 용이하다.
즉, 일반적으로 Value Object는 read only 속성을 갖는다.
※ VO 와 DTO 비교
VO 와 DTO 의 차이점은
특정 비즈니스 로직을 담는 객체를 VO 라고 하고
레이어 간의 통신 용도로 오가는 객체를 DTO 라고 한다.
대부분 VO 와 DTO 를 거의 같은 개념으로 다루고 있다.