1.도메인모델(업무에서 추출되는(명사 추상화) 클래스, 비지니스(업무에서 추출되는(동사=유스케이스 추상화) = 
클라에게 제공하는 서비스), 데이터베이스(DAO).. 의 역할 분리.. (프론트엔드쪽은 논외)
 각 주체간 어떻게 디자인을 해야 종속적이지 않을지.. (재사용성및 기능 분리)
 (ex)dao를 어떻게 만들어야 데이터 베이스 종류에 종속을 받지 않을것인지 = 팩토리(dao 계층화)
 다른 개념과 차이점 (ejb의 엔티티빈 vs dao객체) 등등


2.org.apache.commons.lang 패키지의 BaseObject = toString, equals, hashCode를 제너릭하게 구현해놓음..
 org.apache.commons.lang.builder 패키지의 각종 빌더들이 reflect를 이용해 어떻게 처리를 하는지에 대해 분석
(얼핏 봤는데.. 예전 서블릿 코드 분석할때처럼.. 상위 클래스 뒤져가며.. 메소드 추출하고.. 필드 추출하고.. 요런식 같음)


3.스프링에서 aop에 대해 고민해보기

4.웹app의 프로세스랄까?
 (1).클라용 폼(html,jsp)에서 유저가 입력및 커맨드(비지니스) 선택&전달 
 
 (2).서버의 디스패칭 jsp가 받아서.. 
  클라가 전달한 페이지 url에 따라 또는 빈(jsp페이지) 이름에 따라 해당 요청을 처리할 컨트롤러(리스너)에게
  전달(이과정은..web-app.xml에서 url매핑인가로 세팅가능)

 (3).해당 페이지(url or 빈)에 대한 컨트롤러는 해당 페이지에서 처리할 비지니스들(커맨드)에 따라 사용할 로직(메서드)
  를 호출(이과정도 매핑이 가능함)

 (4).호출된 컨트롤러의 메서드는 컨트롤러가 가지고 있는(컨트롤러는 서비스(비지니스) 객체를 setter를 통해 보관중)
  클라가 전달한 커맨드와 리퀘스트 정보에 따라 do객체를 생성하고 do객체에 데이터 세팅(예외 처리,트랜잭션등 생략)
  그 후에 비지니스 객체의 서비스 메서드를 사용하여 처리하고.. 클라에 전달할 응답용 객체를 호출

 (5).클라에 전달되는 객체는 위의 컨트롤러 단에서 처리한 데이터(do)를 가지고 출력할 양식을 만듬.
  그리고 클라이언트에게 응답할때 페이지를 리다이렉션 해줌..


5.요청이 왔을때.. dao 객체를 생성한다. 작업을 시킨다.(insert,update,delete,search).
  insert 작업을 시키려면.. dao객체를 생성할때 매개변수로 다른 부모 테이블의 인덱스는 필요하지만..
  다른 테이블의 do 정보는 필요가 없다.
  update 작업을 시킬때는.. 반대로 다른 테이블의 인덱스가 필요 없고.. 다른 테이블의 do 정보가 필요하다.


by givingsheart 2014. 1. 7. 14:51