spring + iBatis 연동하기

2011.11.02 21:49

가을의 곰을... 조회 수:8020

spring + iBatis 연동하기

[출처] http://suicide102.egloos.com/2283394

1. web.xml 설정

: 아래의 설정은 spring과 iBatis의 연동과는 상관이 없는 설정내용입니다. 아래 설정은 WEB-INF/spring-config/ 에 있는 applicationContext로 시작하는 xml 파일을 웹어플리케이션이 시작될때 읽도록 하기 위해 설정하였습니다.(밑에 설명을 위해 참고로 설명)

<?xml version="1.0" encoding="UTF-8"?>

<web-app>

...

<context-param>
<param-name>contextConfigLocation</param-name>
<param-value>
/WEB-INF/spring-config/applicationContext*.xml</param-value>
</context-param>

...

</web-app>

2. applicationContext.xml 설정

: spring 관련 설정들은 프로젝트의 규모에 따라 업무단위 또는 웹어플리케이션 계층(layer)단위로 나누기도 합니다. 나는 업무단위로 설정파일을 나누었으며, 일반적인 설정(dataSource,messageSource등)을 이 파일에서 설정하였습니다.

2.1. sqlMapClient 설정하기!

<?xml version="1.0" encoding="UTF-8"?>

<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:p="
http://www.springframework.org/schema/p"
xmlns:xsi="
http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="
http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans-2.0.xsd">

...

<bean id="dataSource"
class="org.apache.commons.dbcp.BasicDataSource"
p:driverClassName="com.mysql.jdbc.Driver"
p:url="jdbc:mysql://localhost:3306/spring?characterEncoding=euckr"
p:username="javajigi" p:password="password" />

<bean id="
sqlMapClient" class="org.springframework.orm.ibatis.SqlMapClientFactoryBean">
<property name="configLocation" value="
classpath:spring/mvc/sample/mapper/maps/sqlMapConfig.xml" />
<property name="dataSource" ref="dataSource" />
</bean>

...

</beans>

3. sqlMapConfig.xml 설정

경축! 아무것도 안하여 에스천사게임즈가 새로운 모습으로 재오픈 하였습니다.
어린이용이며, 설치가 필요없는 브라우저 게임입니다.
https://s1004games.com

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE sqlMapConfig PUBLIC "-//ibatis.apache.org//DTD SQL Map Config 2.0//EN"
"
http://ibatis.apache.org/dtd/sql-map-config-2.dtd">

<sqlMapConfig>

<!-- Optimizing Setting -->
<settings enhancementEnabled="true" useStatementNamespaces="true" />

<!-- Sql Map 설정 -->
<sqlMap resource="spring/mvc/sample/common/model/mapper/maps/sqlMap-Board.xml" />

</sqlMapConfig>

참고> settings의 요소

azyLoadingEnabaled 적재지연은 정보를 필요한 때에만 읽어 들이고 다른 데이터는 명시적인 요청이 있을 때가지 적재를 미루는 기술이다.
cacheModelsEnabled 캐싱은 성능을 향상시키는 기법으로 최근 사용된 데이타가 미래에 다시 사용될 것이라고 가정하고 메모리에 계속저장해 두는 것
enhancementEnabled 이 설정은 CGLIB에 최적화된 클래스를 통해 적재 지연 성능을 향상시킬지 여부를 지정
|참고| CGLIB는 실행시간에 코드를 생성하는 라이브러리이다. 다른 성능 향상 기법들 처럼 꼭 필요하다고 생각되지 않으면 사용하지 않는 것이 좋다.
useStatementNameSpace name space 사용 여부
maxRequest, maxSessions,maxTransactions 사용하기를 권장하지 않는다.
maxRequest 이것은 한꺼번에 SQL문을 수행할 수 있는 쓰레드의 수. 셋팅값 보다 많은 쓰레드는 다른 쓰레드가 수행을 완료할때까지 블록된다. 다른 DBMS는 다른 제한을 가진다. 이것은 최소한 10개의 maxTransactions이고 언제나 maxSessions과 maxTransactions보다 크다. 종종 동시요청값의 최대치를 줄이면 성능향상을 보여준다.
예:
maxRequests=”256”
Default: 512
maxSessions 이것은 주어진 시간동안 활성될수 있는 세션의 수이다. 세션은 명시적으로 주어질수도 있고 프로그램적으로 요청될수도 있고 쓰레드가 SqlMapClient 인스턴스를 사용할때마다 자동적으로 생성될수도 있다. 이것은 언제나 maxTransaction보다 같거나 커야 하고 maxRequests보다 작아야 한다. 동시세션값의 최대치를 줄이면 전체적인 메모리사용량을 줄일수 있다.
예:
maxSessions=”64”
Default: 128
maxTransactions 이것은 한꺼번에 SqlMapClient.startTransaction()에 들어갈수 있는 쓰레드의 최대갯수이다. 셋팅값보다 많은 쓰레드는 다른 쓰레드가 나올때까지 블록된다. 다른 DBMS는 다른 제한을 가진다. 이 값은 언제나 maxSessions보다 작거나 같아야 하고 maxRequests보다 작아야 한다. 종종 동시트랜잭션의 최대치를 줄이면 성능향상을 보여준다.
예:
maxTransactions=”16”
Default: 32

4. sqlMap 예

<?xml version="1.0" encoding="EUC-KR" standalone="no"?>
<!DOCTYPE sqlMap PUBLIC "-//ibatis.apache.org//DTD SQL Map 2.0//EN"
"
http://ibatis.apache.org/dtd/sql-map-2.dtd">

<sqlMap namespace="Board">

<!-- DB 컬럼과 OBJECT 맵핑 -->

<resultMap id="boardList" class="spring.mvc.sample.board.model.Board">
<result property="boardNo" column="boardno" />
<result property="name" column="name" />
<result property="title" column="title" />
<result property="createDate" column="createDate" />
<result property="hitCount" column="hitCount" />
</resultMap>

<select id="list" resultMap="Board.boardList">
SELECT boardno, title, name, createdate, hitcount
FROM board
ORDER BY createdate DESC
</select>

</sqlMap>

5. 퍼시스턴스 계층(Persistence Layer)에서의 사용 예

...

public class IbatisWithMysqlBoardDAO extends SqlMapClientDaoSupport implements BoardDAO {

...

public List findBoardList(int currentPage, int countPerPage) throws DataAccessException,SQLException {
List result = null;
String sqlId = "
Board.list";
SqlMapClient sqlMap = this.
getSqlMapClient();
try{
result =
sqlMap.queryForList(sqlId);
}catch(SQLException ex){
throw ex;
}
return result;
}

...

}

<script> function hrefMark(){ } function hrefPageGo(mark){ try{ if(mark == 'top'){ parent.window.scrollTo(0,0); }else{ document.location.href="this.location.href+"#comment"; } }catch(e){} } //포스트 글로딩후 top포커수 주기 setTimeout('hrefPageGo("top")',300); </script>
본 웹사이트는 광고를 포함하고 있습니다.
광고 클릭에서 발생하는 수익금은 모두 웹사이트 서버의 유지 및 관리, 그리고 기술 콘텐츠 향상을 위해 쓰여집니다.
번호 제목 글쓴이 날짜 조회 수
» spring + iBatis 연동하기 가을의 곰을... 2011.11.02 8020
62 스프링 - 아이바티스 연동 가을의 곰을... 2011.11.02 8722
61 Spring 3 MVC Hello World Example file 가을의 곰을... 2011.11.01 15003
60 문서작성의 기술 가을의 곰을... 2011.10.31 7158
59 [JSP/JAVA] 최상위, 파일 경로 알아내기 가을의 곰을... 2011.10.26 10341
58 오픈소스 강의 (Lecture of OpenSource) 가을의 곰을... 2011.10.14 6657
57 우분투 10.10(64bit)에서 안드로이드 소스(Gingerbread) 빌드하기 가을의 곰을... 2011.10.06 12077
56 스타벅스에서 Arduino 개발 연습하기..... file 가을의 곰을... 2011.09.25 10494
55 파이썬 인공지능 코드 가을의 곰을... 2011.08.21 8999
54 JSP: 개발환경 구축 JSP: 톰캣 + MySQL + 이클립스, 개발환경 구축 file 가을의 곰을... 2011.08.21 8025
53 Importing projects from NetBeans to Eclipse file 가을의 곰을... 2011.07.04 9104
52 미국 대학교 인터넷 오픈 강좌 50 가을의 곰을... 2011.06.05 7062
51 Java GUI 프로그래밍 가을의 곰을... 2011.06.05 15724
50 정보처리기술사 학습관련 사이트 가을의 곰을... 2011.06.04 9377
49 [GMP] 2011.05.14-21 Today's Word file 가을의 곰을... 2011.05.14 8973
48 Sockets Tutorial 가을의 곰을... 2011.04.24 4639
47 Tkinter GUI 프로그래밍 가을의 곰을... 2011.04.24 10509
46 Tkinter로 생각하기 가을의 곰을... 2011.04.24 6004
45 TKinter 요약 가을의 곰을... 2011.04.24 7256
44 기술사 합격시 혜텍 가을의 곰을... 2011.02.14 10290
대표 김성준 주소 : 경기 용인 분당수지 U타워 등록번호 : 142-07-27414
통신판매업 신고 : 제2012-용인수지-0185호 출판업 신고 : 수지구청 제 123호 개인정보보호최고책임자 : 김성준 sjkim70@stechstar.com
대표전화 : 010-4589-2193 [fax] 02-6280-1294 COPYRIGHT(C) stechstar.com ALL RIGHTS RESERVED