3021-07-14강의록_DTO, VO, DAO

MIN.DI·2021년 7월 14일
0

강의록

목록 보기
34/54

Web 3-tier (= 3 Layers)

  • Presentation Layer
    Presentation Logic (화면 로직)
    HTML, JSP
  • Business Layer
    Business Logic 구현
    (예: 계좌이체)
    Servlet 객체
  • Persistence(DB) Layer
    Persistence Logic(DB Logic)
    DAO 패턴객체 (Data Access Object)

비즈니스 로직처리에 필요한 모든 데이터를 가지고있는 객체로,
웹 3계층의 앞->뒤(Presentation Layer -----> Persistence Layer)로 전달되는 객체를
DTO(Data Transfer Object) 객체라 한다. (DTO패턴 적용)

비즈니스 로직처리가 끝나고, 이 로직의 결과로 발생한 데이터를 화면에보여주기 위해
(Persistence Layer -----> Presentation Layer)
로직 처리결과 데이터를 가지고 있는 객체를, VO(Value Object, 값 객체) 라고 한다.
이런식으로 객체를 만드는 패턴을 VO 패턴이라고 함.
VO객체는 읽기 전용이다.
값 오브젝트는 말 그대로 값을 위해 쓰이고, 자바에서는 값 타입을 표현하기 위해 불변 클래스(Read Only)를 만듦.

서블릿에서는 비즈니스 로직만 수행하고,
데이터의 연결등은 분리시킴.
서블릿에서 DTO객체 만들어서 DAO클래스로 보내면 DB로 SQL 쿼리를 날림.
웹 브라우저로 출력할 때에는 VO(값 객체)를 전달.

주의사항

  • DTO, VO 클래스의 모든 필드타입은 기본타입을 사용하지 않고, 참조타입으로 선언해야 한다.
    (데이터는 null값을 가질수도 있기 때문임! 기본타입의 null은 default값이 있다)
  • DTO, VO 클래스는 기본적으로 자바빈쥬 규약에 따라 만든다.
  • VO 클래스는 select sql문장 수행으로 발생한 결과셋의 모든 레코드를 저장하는 용도가 아니라,
    단 하나의 레코드만 저장할 수 있도록 설계하고,
    이 VO객체를 자료구조(List/Set/Map)에 담아서, 여러 레코드를 웹 3계층의 앞으로 전달함.
    (결과셋은 순서가 있다. order by절이 있으니까! 따라서, 순서를 보장하는 List 객체를 주로 사용)
  • VO 클래스는 테이블 당 하나씩 mapping되게 만든다.
  • VO 클래스는 테이블의 1개 레코드(=행. row)를 읽기 전용으로 사용할 수 있도록 해야하기 때문에,
    모든 컬럼값을 파라미터로 받는 생성자만 있어야 함.
    따라서 기본생성자는 생성하지 않는다. >>자바빈즈 규약 중 1개를 위배

자바빈즈 JavaBeans 클래스 규약
1. private 접근제한자로 필드를 선언한다. (필수)
2. getter 메소드와 setter 메소드를 갖는다. (필수)
3. 기본 생성자가 반드시 존재해야 된다. (필수)
4. implements Serializable (선택)

profile
내가 보려고 쓰는 블로그

0개의 댓글