심심한잉여의 잡동사니

[JAVA]POJO, DTO, DAO, VO 본문

코딩일기/Java

[JAVA]POJO, DTO, DAO, VO

심심한잉여 2022. 4. 7. 16:06
반응형

POJO란
프레임워크를 사용하기 위해 강제되는 제약이 없는 자바 객체이다.

인터페이스, 상속, 어노테이션이 강제되지 않는 객체라고 볼 수 있다.

대표적으로 Servlet객체는 HttpServlet을 꼭 받아야 프레임워크를 작동시킬 수 있기 때문에 POJO라고 볼 수 없다.

스프링으로 보면 @Service 나 @Controller를 받아야 하는 서비스, 컨트롤러 객체들도 POJO라고 볼 수 없다.


DTO란
순수하게 데이터를 담아 계층간 전달하는 객체이다.

스프링은 3가지 독립적인 계층이 존재한다.
- 뷰 계층
- 컨트롤러 계층
- 비즈니스 계층

각 계층에서 사용되는 값을 공유하기 위해 Data Transfer Object라는 DTO를 사용한다.
이 객체는 관계형 데이터베이스의 필드값과 동일한 변수들을 private 멤버로 가지고 있고 이 멤버에 접근할 수 있는 getter, setter로 이뤄져 있다.

DTO는 클라이언트가 값을 요청했을 때 그 요청한 값을 DTO에 담지 않고 일일이 하나씩 응답해 주면 네트워크에 많은 트래픽이 발생하기 때문에 이를 방지하기 위해 사용한다.


VO란
값 그 자체를 나타내는 객체

DTO와 유사한 개념이지만 VO는 객체가 같은 클래스로 부터 나왔다 하더라도 내부의 값이 다르면 두 객체는 같다고 판단하지 않는다. 하지만 DTO는 내부의 값이 다르더라도 같은 클래스로부터 나온 객체라면 두 객체가 서로 같다고 판단한다.


DAO란
실제 객체는 멤버 변수와 멤버 메소드로 구성되 있다.

이것은 하나의 객체가 데이터의 저장과 그 데이터를 사용을 동시에 한다는 것인데, 웹 개발에서는 데이터 저장용도의 객체와 데이터 사용 용도의 객체가 따로 분리되어 있다. 

반응형

'코딩일기 > Java' 카테고리의 다른 글

[JAVA] 어노테이션(Anotation)  (0) 2022.04.12
[Java] 리플렉션 Class 클래스  (0) 2022.04.11
[JAVA] 추상 클래스 VS 인터페이스  (0) 2022.03.31
[JAVA] DTO와 VO  (0) 2022.03.30
[JAVA] 디자인패턴 - 싱글톤  (0) 2022.03.20