데이터 저장계층 또는 영속계층(Persistence Layer)에 대한 이해 - DAO(Data Acess Object), DTO(Data Transfer Object), VO(Value Object)

CODEDRAGON Development/Java

반응형


데이터 저장계층 또는 영속계층(Persistence Layer)에 대한 이해

DAO/DTO/VO, 영속계층(Persistence Layer)에서 사용되는 특정 패턴을 통해 구현되는 Java Bean

 

용어

설명

DAO

(Data Acess Object)

·       특정 타입의 데이터베이스나 다른 지속적인 메커니즘(Persistence Mechanism)추상 인터페이스를 제공하는 객체입니다.

·       애플리케이션 호출을 데이터 저장 부분(Persistence Layer)에 매핑함으로써 DAO데이터베이스의 세부내용을 노출하지 않고 특정 데이터 조작 기능을 제공합니다. 이 고립성은 단일 책임 원칙(Single Responsibilty Principle)에 기반합니다.

DTO

(Data Transfer Object)

·       DTO는 프로세스 사이에서 데이터를 전송하는 객체를 의미합니다. 이것을 이용하는 이유는 프로세스 간의 커뮤니케이션이 주로 개별 호출이 부담스러운 작업일 경우가 많은 원격 인터페이스(, 웹 서비스)에 의해 이루어지기 때문입니다. 대부분의 개별 호출이 클라이언트와 서버 간의 왕복 시간을 소모하기 때문에, 호출 횟수를 줄이는 방법 중 하나는 몇 번의 호출에 의해 전송될 데이터를 모으는 DTO를 이용해서 한번만 호출하게 하는 것입니다.

·       DTO DAO의 차이는 DTO는 스스로의 데이터를 저장(set) 및 회수(get)하는 기능을 제외하고 아무 기능도 갖고 있지 않다는 것입니다. DTO는 테스트가 필요한 비즈니스 로직을 갖고 있지 않은 간단한 객체입니다.

VO

(Value Object)

·       VO는 간단한 독립체(Entiy)를 의미하는 작은 객체를 의미합니다.

·       VO의 같음은 그 정체성에 의해 결정되지 않는데, 이 뜻은 두 VO들은 그 두 가지가 같은 값을 가지고 있을 때 동일한 것이지 같은 객체라고 해서 동일하지는 않다는 것입니다.

·       작기 때문에, 같은 독립체를 대변하는 복수의 같은 VO들이 존재할 수 있다. 가끔 하나의 인스턴스에 의존하고 그에 기반한 레퍼런스를 사용하기보다는 새 객체를 생성하는 것이 더 간편합니다.

·       VO는 불변해야 하며, 이는 두 VO가 같도록 생성되었으면 같은 값으로 남아 있어야 합니다는 것을 암시합니다.

·       자바에서 VO는 작은 자바빈이나 DTO 혹은 POJO(Plain Old Java Object, 간단한 자바 클래스의 인스턴스)를 의미합니다

 

 

'Development > Java' 카테고리의 다른 글

연산자(Operator)  (0) 2017.11.13
자바의 자동 형변환 규칙(Implict Conversion)  (0) 2017.11.13
문자 자료형 char  (0) 2017.11.09
실수 자료형 선택 기준 (float vs double)  (0) 2017.11.09
대소문자 철저히 구분할 것  (0) 2017.11.08