프로그래밍 이야기

[JAVA] iBatis+Struts2 예제

박디 2009. 8. 15. 03:39

정말 너무나 오랜만에 글을 써보는것 같습니다.. 거의 반년만인것 같은데.. 몇달간 자바를 배우느라

안돌아가는 머리 부여잡고 고생중입니다. 다들 재미없어하는 프로그래밍 얘기를 여기다 쓸줄이야

ㅋㅋㅋ 그런다고 잘 알면서 쓰는것도 아니고 잘못된 정보가 있을수도 있으니 보시는분들은 나름

필터링 해서 보시면 되겠습니다. 어짜피 파일도 많고 안의 내용을 전부 글로 쓰기는 시간도 없고

귀찮기도 해서 대략적인 파일구조만 설명하고 예제로 만든 파일을 첨부했습니다.

1. iBatis
  iBatis를 처음접했을때는 파일갯수만 늘어나고 복잡하다고 생각했습니다.. MVC Model 1에서
 주구장창 사용해오던 DAO클래스에 너무나 익숙해져서인지 왜 쓰는지도 사실 잘 몰랐고 새로운
 시도는 항상 어려움이 있는것 같습니다. 근데 계속써보니 DAO클래스 만들어서 PrepareStatement
 줄창써서 쿼리날릴때와는 비교도 안되게 편하더군요. 생각해보면 DAO클래스 제작은 노가다에
 가까웠던듯 싶습니다. 물론 단점은 존재하는것 같습니다. DAO클래스는 자바파일이라 쿼리문
 중간에 조건문을 사용해서 다양한 기능을 만들어볼수 있었는데 iBatis를 사용하게 되면 아직
 더많은 속성들을 몰라서인지 몰라도 PL/SQL의 Function이나 Procedure를 사용해야될일이
 많아질것 같았습니다. 물론 PL/SQL을 잘 모르는 저로서는 손발이 떨릴뿐.. 그래도 단순
 히 리스트 출력,수정,삭제,삽입에는 iBatis를 사용하는것이 편한것 같습니다.

2. Struts2
 Struts1까지는 그래도 MVC Model2를 초기에 공부할때 했던것들과 형식이 유사해서 편했
 습니다만 Struts2를 하면서 라이브러리가 개발자눈에 안보이게 처리하는 부분이 많아서
 적응하는데 좀 시간이 걸렸습니다. 에센셜한 부분에선 깡통같은 머리라 특히 Getter/Setter를
 어떻게 JSP에서 불러올수 있는지는 그냥 신기하기만 하네요. 기존에 JSP에서 Model2를 적용
 해서 만들면서 getAttribute나 setAttribute를 사용하지를 못하니 조금 답답한 면이 없지 않았
 습니다만 계속 만들어보다보니 그저 만들어보는데에는 기존방식과 크게 다르진 않더군요.
 대신 인터셉터가 들어가고 유효성검사(Validation) 체인이 걸리면 규모가 커질경우 보기에
 좀 복잡하겠다는 생각이 들었습니다.

 개발환경 : Eclipse EUROPA,Oracle 10g Database

 전체 UI :

사용자 삽입 이미지

모양은 별로 신경쓸 부분이 아니라 생각해서 대충.. 페이징도 없습니다.

Eclipse Workspace:

사용자 삽입 이미지

전체적인 파일구조입니다. 대략적인 설명부터..

iBATIS
custom.dao패키지
SqlMapConfig.xml : DB와 연결할 타입을 설정합니다. DBCP,JDBC,JNDI를 사용할수가 있는데
ConnectionPool이 어째 잘 적용이 안되서 JDBC로 설정했습니다.

Query.xml : SqlMapConfig.xml에서 읽어들이는 파일입니다. 여기에는 실제 쿼리문과 custom.dto
패키지의 CusomDTO클래스 파일을 읽어들일수 있는 설정을 해주게됩니다. 파일이름은 아무렇게나
만들어도 상관없습니다. 편의를 위해 Query.xml로 했습니다.

CustomDAO.java : struts1이나 MVC Model1에서 사용하던 DAO클래스와 같은 기능을 담당
합니다. 물론 이름은 임의로 줘도 상관없고 여기서 SqlMapConfig.xml을 파싱하게됩니다.
Query.xml은 SqlMapConfig.xml에서 읽어들이기 때문에 같이 파싱이 되겠죠. 이 파일내의
각 기능을 담당하는 메소드에서 Query.xml에 정의한 실제쿼리문에 대한 id를 참조하게 됩니다.

Struts2
struts.xml : Struts2의 각 액션에 대한 정의를 해주는 파일입니다. Struts1에서는 struts-config.xml
로 정의되있습니다. struts.xml에서는 라이브러리내의 struts-default를 상속받아 인터셉터나 기타
기능등을 사용할수가 있으며 이 struts-default는 재정의 가능합니다. 또한 라이브러리 내의
default.properties의 내용을 여기서 struts.properties라는 파일을 만들어서 재정의 가능합니다.
(물론 제대로 써본적은 없습니다..;;;)

대략적인 설명은 위와같습니다.

소스내에 주석을 달아놨는데..개인적인 용도로 썼던주석이라 보기에 좀 거북하겠지만 저같이

잘이해가 안되신 분들을위해..ㅋ  실행은 index.jsp로 하시면 되고 이클립스에서 war파일을

import시키면 되겠습니다.

 
간만에 글을 썼긴한데 설명도 별것도 없고 이상해졌네요. 주석에 모든 설명이 있긴합니다..

불확실한 정보지만.. 상당히 간단하게 만들었기 때문에 Struts2와 iBatis의 연동방식을

이해하는데에는 괜찮다고 생각됩니다.

다음에는 제 개인적 정리 차원에서 iBatis만 다뤄보도록 하겠습니다.

p.s : 깜빡하고 DB테이블을 넣질 않았네요.. DTO클래스에서 정의된 내용을 가지고 테이블 만드시면
되겠습니다. 혹시 필요하신분은 댓글 달아주세요~(물론 오라클이 설치되있다고 가정합니다.-0-
참고로 번호값을 받아올때 시퀀스를 생성하지 않았습니다..)