아이바 티스 기본구조 이다.
최초 실행 해야 할것은 ibatis-2.3.4.726.jar 파일과 ojdbc14.jar 을 빌더 패치 하여 프로젝트 에 Jars Import 시켜야만 한다.
그리고 프로젝트에서 new Folder 생성후 폴더에서 마우스 오른쪽 bulder path -> use as source Folder 클릭하여 소스폴더로 변경 한다.
소스폴더로 변경된 conf 폴더에 SqlMapConfig.properties 과 SqlMapConfig.xml 파일을 생성 한다. 생성되어 있는것을 옮겨 놓아 수정 하거나하자 .
=================================================================================================================================
SqlMapConfig.properties 파일 이다.
내용을 보면 dirver 에서 jdbc 패키지를 이용 하여 오라클에 접속을 시도 하며
url 을통해 오라클서버로 접속 함을 알수 있다
@ 이후에 서버명:포트번호:오라클버전 등을 적는것을 볼수 있다.
=================================================================================================================================
SqlMapConfig.xml 파일의 소스 이다.
앞에서 만든 SqlMapConfig.properties 를 이용 하여 정의 됨을 알수 있다.
기본 셋팅후 JDBC 의 기본 구조를 가지고 자신을 sqlMap 화 시킴으로서 사용 할수 있도록 대기 상태화 된다.
=========================================================================================================================================
member.xml 파일 이다.
보기와 같이 sqlMap 생성 과정 에서 select 문을 질의 하고 있는데 그 값을 가져 오는 쿼리 문을 id화 시켜 정의 하고 있다. getMemberName 과 getMembers 두개가 정의 됨을 알수 있다.
따라서 생성 후에 <select></select > 안에 사용 하는 쿼리 문장을 추가,수정,삭제 등을 통해 알맞게 변동 하면서 id 값을 다르게 하여 명백하게 후 개발과정에서
알아 볼수 있도록 정의 하면 좋을것 이다. 이에 추가 하여 다이나믹화 시킬수 있는데 그것은 따로. 셀렉트 안에 <dynamic> 문을 추가 하여 조건에 따른 셀렉문장 지정
========================================================================================================================================================================
Ibatise 의 메인 클래스다 실제 JSP 사용중에 이렇게 만들지는 않지만 잘 만들어져있는지 테스트 하기 위해 만들어져 있다. 실행 환경및 소스를 분석해 보자.
먼저 IbatisService 를 getInstance ghk 화 하여 service라는 이름으로 변수화 하였다. 이후.
MemberBean 을 제너레이션 하여 ArrayList 를 생성 하며 기본 값을 null 을 주었다.
이후 a001 의 param 을 생성 하며 조건 값을 주었다. 즉 오라클의 member 테이블의 id 값이 "a001" 인 것을 결과 값으로 내놓기 위한 것이다. 이하 서비스를 설명 하기 위해 IbatisService를 확인 해보자
===================================================================================================================================================================================
IbatisService.java 이다.
소스 분석을 해보자.
소스 윗부분부터 보면 알수 있듯이 IbatisServie 의 경우 생성을 위해 기본적으로 getInstace 화 하여 (IbatisService.getInstace()) 생성 하게 만들었는데
그 이유는 그냥 만들어도 되지만 메모리의 효율을 위해 싱클톤 패턴으로 생성 한것이다. Ibatis의 기본생성자는 private 화 되어 보통 만들듯이 new IbatisServise 로는 만들수 없다.
반드시 IbatisService 의 getInstance() 메서드를 사용 하염 만들게 되는대 이 메서드의 클래스 내의 service 생성자를 보유 할수 있게 되며 주소 값이 공유 되게 되어 있다.
즉 최초 만들시에는 service 생성이 안되어 있음으로 service 가 새로 생성되어 보내 주고. 후에 생성될 경우 service 는 static 화 되어 있음으로 모두 공유 하게 되어 service 는
null이 아니며 최초 만들었던 service 를 돌려 주게 되며 실제 사용 할때는 변수명의 차이는 있을 지언정 같은 메서드를 사용 하게 됨으로서 같은 기능의 메서드를 구지
여러개 만들지 않게 되어 메모리를 절약 할수 있다. 이하 IbatisDao 에서도 같은 방식으로 코딩을 하게 됨으로 참고 하자. 내부 메서드는 구조만 보면 될듯 하다.
===========================================================================================================================================================
IbatisDao 이다. 이 장에서 싱클톤 분야는 제외 하겠따. 중요 한것은 메서드의 중복 성을 뛰며 자체 적으로 생성한 클래스를 이용 하여 건너 뛰며 실행 하게 되는것이다 즉
main - > service -> dao->sqlMapClient(SqlMapConfig.xml)->JDBC->오라클 형식으로 만드는것은 어찌 보면 효율이 없어 보인다. 단순히 main과 sqlMapClient 는 제쳐
두고라도 service dao 등의 클래스 건너 뛰기는 일견 효율성이 떨어져 보이지만. 만약 가져온 데이터의 가공 또는 연산등이 필요 한 경우
dao 는 sql 과 jdbc 등의 파일과 연결 됨으로 그 파일을 수정 하기보다는 service 라는 클래스의 완충 장치를 통해 수정 이 가능 하며 dao ~ Jdbc 사이의 가져오는 연산 량을
범위를 높인후 또다른 service2 와 연동 하여 각자 원하는 메서드를 통해 값을 가져오는 것도 가능 하다 . 이 모든 기능은 각기 같은 메모리 값을 가지고 실행 되기 때문에 효율적이다.
=======================================================================================================================================================================
BuildedSqlMapClient 클래스 이다. 소스 에서 sqlMapConfig.xml 등을 통해 JDBC 에 접근 함을 알수 있다. 여기서 Ibatis.jar 의 SqlMapClient 에 접근 하며 만들어 진다.
이상 2012년 3월 15일 Ibatise 의 기본 학습을 마치며 미진한 부분은 추가로 지속해서 수정 해야 겠다;;;
다음으로 신세계 마이바 티스를 공부해 보자.
이 글은 스프링노트에서 작성되었습니다.
'JSP' 카테고리의 다른 글
JSP 에러코드 모음 (0) | 2012.05.08 |
---|---|
include (0) | 2012.05.08 |
Filter(유저를 this 시켜 보자 ) (0) | 2012.05.08 |
FileUploadRequestWrapper (0) | 2012.05.08 |
FileUpLoad (0) | 2012.05.08 |