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 (선택)