FIF's 코딩팩토리

DAO vs DTO vs VO 본문

Database(데이터 베이스)

DAO vs DTO vs VO

FIF 2019. 5. 23. 10:46
반응형

DAO(Data Access Object)는 데이터베이스의 data에 접근하기 위한 객체이다.

데이터베이스 접근을 위해 로직과 비즈니스로직을 분리해서 사용한다.

DAO의 경우 DB와 연결할 Connection까지 설정되어 있는 경우가 많다.

 

DTO(Data Transfer Object)는 계층간 데이터 교환을 위한 자바빈즈를 의미한다.

여기서 말하는 계층간의 의미는 Controller, View, Business Layer 등을 말하며 각 계층간 데이터 교환을 위한 객체를 의미한다.

DTO는 로직을 가지지 않는 순수한 데이터 객체이고 gettersetter메소드만 가진 클래스를 의미한다.

getter/setter 메소드에서 중요한건 Property.

자바는 Property가 문법적으로 제공되지 않는다. 그래서 지켜야할 약속이 있다.

getter/setter에서 setget이후에 나오는 단어가 property라고 약속하는 것이다.

프로퍼티가 멤버변수로 결정되는 것이 아닌 getter/setter에서의 프로퍼티로 결정된다.

즉 멤버변수는 아무렇게나 지어도 영향이 없고, getter/setter로 프로퍼티(데이터)를 표현한다.

 

VO(Value Object)DTO와 혼용해서 쓰지만 미묘한 차이가 있다.

VO는 값 오브젝트로써 값을 위해 쓰인다. 자바는 값 타입을 표현하기 위해 불변 클래스를 만들어 사용하는데, 불변이라는 것은 readOnly 특징을 가진다.

이러한 클래스는 중간에 값을 바꿀 수 없고, 새로 만들어야 하는 특징이 있다.

예를들어 Color클래스를 보면 Red를 표현하기 위해 Color.Red를 사용하며 getter기능만 존재한다.

 

VODTO는 둘다 데이터를 저장하는 용도이다. 입력된 데이터를 getter를 통해 사용하므로 주요 목적은 같다.

그러나 DTO의 경우 가변의 성격을 가진 클래스다. (setter사용)

그에 반해 VO는 불변의 성격을 가진다. (readOnly-getter기능만 존재)

 

 

반응형
Comments