처음 계획은 IBatis를 사용할 계획이였지만 어쩌다 보니 IBatis + Hibernate로 수정이 일어났고, 현재는 Hibernate로만 진행중입니다.

이유는 이클립스 플러그인 중 하나인 Hibernate Tool을 사용하면 코드 Generation과 DB 스키마 생성을 한번에 해결 할 수 있었기 때문입니다.

물론, 장단점은 다 있습니다. IBatis는 직접 쿼리문을 작성하기 때문에 코드가 어떤식으로 돌아갈지 명확하게 보입니다. 반면에 Hibernate는 Config파일, Mapping 문서에 작성된 대로 연관 관계를 맺고 쿼리문이 자동으로 생성되며 돌아갑니다. (IBatis 방식으로도 사용 가능하긴 합니다.)

그래서 될수 있으면 Hibernate로 올인하려 합니다.

시작에 앞서 저희팀은 Mapping 문서 기반으로 가야할지 Annotation 기반으로 가야 할지 짧게 고민을 해봤으나 어렵지 않게 Mapping 문서 기반으로 하는것으로 결정했습니다.

왼쪽은 Annotation기반으로 작성된 코드이며 오른쪽은 Mapping 문서를 통해 Generation된 코드 입니다.


코드 Generation에 사용된 Mapping 문서 입니다.

Annotation 기반으로 작성된 코드는 심플해 보이지만 Annotation부분은 저희 팀원들 눈에 명확하게 읽히지 않는 문제점이 있었고(Mapping 문서가 눈에 많이 익어서 그런것일수도 있습니다.), Mapping문서를 기반으로 작성된 코드는 몇가지 생성자와 오버라이드 된 toString() 메서드가 추가되서 코드가 생성되었습니다.

하지만, 안좋은 점은 모듈이 추가 될때마다 새로운 모델을 Generation해야 하는데 등록되있는 도메인 모델 전부가 다시 Generation 되는게 좀 불편했습니다. 이유는, 저희팀은 Svn 저장소를 통해 버전업 관리를 하고 있는데 Generation 할때마다 생기는 주석에 시간때문에 변경된 파일로 구분되는 문제가 있었습니다.

해결법이 있는지는 모르겠지만 진행하는데 있어서 큰 어려움은 없었기에 알아보진 않았고, Svn 기능을 이용해서 넘어가고 있습니다.

그 외에도 Mapping 문서에서 쓰일수 있는 속성들이 많은데, 아직 완벽하게 다루지 못하는 가장 큰 문제점이 있으나 개인적인 생각으로는 조만간, 금방 해결해나가면서 진행될 것 같습니다.

결론적으로는 ERD를 통해서 Mapping 문서를 작성하고 코드 Generation.. Dao 구현, 그리고 Junit 테스트를 하는 순서대로 진행하니까 상당히 안정적이고 구현 속도도 빨랐습니다. (Service, Controller도 마찬가지였습니다.)

'Project > B.M.S' 카테고리의 다른 글

Junit.  (0) 2012.03.05
ERD.  (0) 2012.03.05

+ Recent posts