struts로 검색한 결과 :: 시소커뮤니티[SSISO Community]
 
SSISO 카페 SSISO Source SSISO 구직 SSISO 쇼핑몰 SSISO 맛집
추천검색어 : JUnit   Log4j   ajax   spring   struts   struts-config.xml   Synchronized   책정보   Ajax 마스터하기   우측부분

회원가입 I 비밀번호 찾기


SSISO Community검색
SSISO Community메뉴
[카페목록보기]
[블로그등록하기]  
[블로그리스트]  
SSISO Community카페
블로그 카테고리
정치 경제
문화 칼럼
비디오게임 스포츠
핫이슈 TV
포토 온라인게임
PC게임 에뮬게임
라이프 사람들
유머 만화애니
방송 1
1 1
1 1
1 1
1 1
1

struts로 검색한 결과
등록일:2008-03-16 10:01:10
작성자:
제목:ActionForm 사용전략


1.ActinoForm사용전략의  종류
①  도메인  객체  Bean과  1:1  매치되는  ActionForm  생성
②  통합적으로  사용가능한  하나의  ActinoForm  생성
③  도메인  객체  Bean을  자신의  property로  가지는  ActionForm  생성
④  내부에  Map  객체를  가지는  ActionForm  생성
⑤  별도의  클래스  파일  없이  struts-config.xml에서  정의해서  사용하는  DynaActionForm  생성

2.  각각의  특징과  장*단점
①번의  장점
-.  도메인  객체  Bean과  1:1  매치되는  방식이므로  데이터  이동이  명확하며  전체  애플리케이션  구조  이해가  수월하다.
-.  BeanUtils.copyProperties  메써드  사용으로  Action  단에서의  처리로직이  거의  필요없다.
①번의  단점
-.  도메인  객체  Bean의  개수에  따라  ActionForm  클래스를  만들어줘야  하므로  큰  애플리케이션일수록  작업량이  많아지게  된다.
-.  도메인  객체  Bean의  설계에  종속적이므로  도메인  객체의  변경에  따라  계속적인  유지보수가  발생하게  된다(매치되는  도메인  객체  Bean과  property  이름이  같아야  하므로).

②번의  장점
-.  하나의  ActionForm  클래스로  여러가지  Action에서  사용하게  되므로  재사용성이  높으며,  유지보수할  클래스  개수가  현저하게  줄어든다.
②번의  단점
-.  하나의  ActionForm에서  여러  도메인  객체  Bean  property와  매치시켜야  하므로  도메인  객체  Bean  설계시  비슷한  property  이름을  통일시켜주는  작업(예를  들어  각  도메인  객체  Bean의  pk  속성의  이름은  id로  통일한다는  등)을  해주거나(Layer간  의존도가  높아짐),  해당  Action에서  불필요한  데이터까지도  담게  됨으로써  통신시  부하가  상대적으로  높아질  것이다.  그리고상당히  머리가  아프며  이것저것  동시다발적으로  생각해야  되기  때문에  고도의  집중력이  요구되어진다.


③번의  장점
-.  도메인  Bean을  ActionForm  내에서  직접  property로  가지고  있게  됨으로써  데이터  copy와  같은  단계가  필요없으며,  도메인  객체  Bean  내부의  변경이  ActionForm  자체에  영향을  주지  않음으로써  Layer간  의존도를  낮출  수  있다.
-.  Bean에서의  프라퍼티를  일일이  ActionForm  에서  매치되게  구현해주지  않아도  됨으로써  클래스  구조를  간단하게  만들며  유지보수를  쉽게  해준다.
③번의  단점
-.  내부의  도메인  객체  Bean에서  String,  Boolean  이  아닌  다른  타입(숫자형  타입  Long,  Integer  혹은  날짜형  타입  Date,  Timestamp  등)을  가지고  있게  될  경우,  사용자  입력  오류  등의  경우에,  ClassCastException이  발생할  가능성이  높으며,  이에  대한  에러  처리에  어려움을  가진다.
-.  ActionForm  의  내부  propery인  Bean이  가지고  있는  property에  대한  Validation  체크를  위한  xDoclet  사용이  안됨으로  인해  개발자  공통의  xml  생성  및  관리에  불편함을  초래한다.

④번의  장점
-.  ③번의  경우와  비슷하게  도메인  객체  Bean의  property의  변화와  관계없이  ActionForm  내부의  Map  property에  set/getMethod()를  사용해주면  되기  때문에  단순한  형태의  ActionForm  생성이  가능하며  유지보수  대상  클래스가  줄어든다.
-.  org.apache.struts.scaffold.BaseMapForm  을  상속받기만  하면  Map  ActionForm  구현은  간단하게  끝난다.
④번의  단점
-.  역시  ③번과  마찬가지로  Validation  생성을  위한  xDoclet  사용이  불가능하며,  명확한  property가  명시되어  있지  않음으로  인해  클래스  전체  구조가  이해하기  힘들게  된다(특히  유집보수를  다른  사람이  하게  될  경우).이  부분도  만만치  않게  머리가  아프다.

⑤번의  장점
-.  각각의  클래스로  생성되어야  할  ActionForm  들을  struts-config.xml에서  태그만  정의해주면  되기  때문에  사용이  간편하며,  ActionForm  관리가  용이해진다.
-.  ActionForm  클래스를  하나도  사용하지  않아도  됨으로  인해  ActionForm  클래스  유지보수와  관련한  비용이  절감된다.
⑤번의  단점
-.  역시  Validation  생성을  위한  xDoclet  사용이  안되며,  struts-config.xml  관리가  어려워진다(config  파일의  거대화  혹은  merge  파일로  빼냈을  경우  관리의  복잡성).

3.  각각의  특징에서  본  우리의  ActionForm  사용전략
-.  일단은  case  by  case  의  입장을  견지한다(각각의  사용전략은  그에  맞는  경우에  따라  최고의  효과를  가질  수  있으므로,  선험적인  제외는  올바르지  않다).
-.기본적으로는  도메인  객체  Bean과  1:1  매치관계를  가지는  ActionForm  을  작성한다.(어플리케이션의  구조가  직관적이며  Action단의  불필요한  로직발생을  최소화)
-.  write,  update  등과  상관없이  List  화면만  보여줄  경우  공통된  타입(List)으로  데이터를  받아오기  때문에  공통적인  하나의  ActionForm  작성으로  대체하는  것이  효율성  및  유지보수의  편리함을  극대화할  수  있다.
-.  위의  ListActionForm의  경우  검색조건이  있다면,  검색조건은  Map으로  관리하는  것이  편리하다(검색조건은  화면에  따라  다를  수  있으며,  도메인  객체  Bean과  매치되는  property  속성이  아니므로  해당  검색  param을  key로,  넘겨진  값을  value로  가지는  Map으로  관리하는  것이  유리하다).

[출처]  ActionForm  사용전략|작성자  어린양이