본문 바로가기

JAVA/JSP

JSP Beans, DTO, DAO, Manager Class, Beans Scope

원문? :http://blog.naver.com/yongirani?Redirect=Log&logNo=10028678712

▩ 빈즈(강낭콩)의 이해
   - jsp페이지상에 나열되는 자바 처리로직은 디자인 코드와 함께 매우 복잡한 코드를 구성합니다.
     이로인해 디자인 변경시 자바코드가 영향을 받아 오류가 자주 발생되며, 코드 수정시 코드를 알아볼 수 없어
     유지보수가 매우 힘이 듭니다.
     이러한 반복되는 자바 코드들을 JAVA파일안에 저장하여 사용하는 형태를 빈즈라고 합니다.

   - 확장자는 *.java 입니다. 컴파일하여 .class형태로 배포합니다.

   - 메모리에 생성된 빈즈(DTO)는 다른 자바 클래스(DAO(Data Access Object), Business Logic)에 의해서 사용됩니다.

   - 빈즈는 dll과 같은 원리를 가지고 있습니다.

   - 빈즈는 sun에서 제시한 작성 규칙이 존재합니다.




▩ DTO(Data Transfer Object: 데이터 전송 객체, Value Object) 빈즈

   - 폼에서 입력된 데이터들은 하나의 DTO 객체로 변환 될 수 있습니다.

   - 하나의 데이터베이스 레코드를 저장하며 레코드와 같은 구조를 가지고 있습니다.

   - 하나의 레코드는 빈즈 클래스 객체 하나로 매핑됩니다.

   - 데이터베이스 컬럼은 멤버 변수로 매핑됩니다.
  

1. 필드선언(멤버 변수, 인스턴스 변수)
   . 하나의 컬럼값을 저장
   . 보안성 및 캡슐화, 데이터 은닉의 목적으로 private으로 선언합니다.
   . private String name;
    
   
    

2. setter
   - 필드에 값을 저장하는 기능을 합니다.
   - HTML 폼의 INPUT태그의 값을 빈에 저장하는 역활을 합니다.
   - 메소드명은 set + input태그의 이름중 첫자를 반드시 대문자로 사용하는 규칙을 적용해 태그명을 지정합니다.
     따라서 HTML에서 input 태그의 이름은 영문 소문자를 사용하며 태그의 이름에 신중을 기해야 합니다.

     예 1)
     <input type="text" name="id" size="15" value='user1'>
     <input type="text" name="addr" size="15" value='user1'>

     public void setId(String id) {
         this.id = id;
     }

     public void setAddr(String addr) {
         this.addr = addr;
     }



3. getter
   - 인스턴스 변수의 값을 가져오는 기능을 합니다.
    
     public String getName(){
         return name;
     }




▩ DAO(Data Access Object) 빈즈
   - DTO 객체를 만들어 편집 및 조작을 합니다.
   - DTO를 데이터베이스 서버에 저장하기도 하고 데이터베이스 서버로 부터 레코드를 SELECT해
     DTO 객체로 변경해 가져오기도 합니다.
   - Insert, delete, update, select등 데이터 처리를 주 목적으로 합니다.



  

▩ Manager Class(관리 클래스)
    - DTO와 DAO사이에서 연결 및 처리 역활을 합니다.

      DreamWeaver          Eclipse             DbEdit
      (*.html, *.jsp)      (*.java)           (*.sql)              
      ----------- ------------------------  -------------     
      JSP <-----> Manager Class <-----> DAO <-----> Oracle
       ↑                                ↑
       │                                │
       └--------------------------------┘   
                       DTO 
             계층간 데이터 전송 객체




▩ 빈즈의 사용 Scope(범위)
   - Page :
     . 기본값, page를 벗어나면 자동으로 소멸합니다.(중요)

   - Request : forward, include에서 사용가능, 약간 사용됨

   - Session :
     . 사용자가 로그인해 있는 동안 계속적으로 살아 있음
     . 메모리 소모가 심함으로 필요한 곳에 적절히 사용해야 함
     . 쇼핑카드 구현등 객체를 계속적으로 유지해야하는 경우에 사용됩니다.
     . 사용자가 브러우저를 닫으면 관련 JSP Session 빈은 소멸함(중요)

   - Application
     . 웹 사이트 전체, 모든 사용자에게 영향을 미치는 빈
     . 메모리 소모가 심함으로 많이 사용하지 않음, 서버가 운영되는 동안 객체가 살아 있음
     . 모든 사용자가 변수와 객체를 공유하게 됨
     . 서버를 재시작해야 변수들이 재설정됨

'JAVA/JSP' 카테고리의 다른 글

[Java] Singleton 방식에서 객체가 null값이 될때  (0) 2008.04.02
HashMap 예제  (0) 2008.01.06
한글파라미터 값 넘길때 한글처리  (0) 2008.01.01