spring + iBatis 연동하기

2011.11.02 21:49

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

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>
본 웹사이트는 광고를 포함하고 있습니다.
광고 클릭에서 발생하는 수익금은 모두 웹사이트 서버의 유지 및 관리, 그리고 기술 콘텐츠 향상을 위해 쓰여집니다.
번호 제목 글쓴이 날짜 조회 수
75 한 페이지 기획서 : one page proposal 가을의 곰을... 2011.11.27 6278
74 보왕삼매론 가을의 곰을... 2011.11.24 6657
73 오픈 소스 클라우드 분석 file 가을의 곰을... 2011.11.22 6109
72 특허출원 직접특허출원 가을의 곰을... 2011.11.20 7104
71 특허 등록 절차 가을의 곰을... 2011.11.17 7811
70 특허/실용신안 출원 절차 가을의 곰을... 2011.11.17 7073
69 URL Rewrite : 동적 URL 지정 : creating Dynamic URL 가을의 곰을... 2011.11.16 10520
68 자바에서 x86 어셈블리로 프로그래밍: x86 Assembly Programming in Java Platform 가을의 곰을... 2011.11.15 20535
67 XCode 간단 설치와 사용법 - Objective-C의 예제 개발하기 file 가을의 곰을... 2011.11.13 10727
66 Android : Source Code Overview 가을의 곰을... 2011.11.10 10041
65 Java Spring 2.0 Web 예제(Hello World) file 가을의 곰을... 2011.11.09 7726
64 kernel.org가 아닌 구글에서 안드로이드 소스 다운로드 및 빌드 가을의 곰을... 2011.11.07 10169
» spring + iBatis 연동하기 가을의 곰을... 2011.11.02 8004
62 스프링 - 아이바티스 연동 가을의 곰을... 2011.11.02 7972
61 Spring 3 MVC Hello World Example file 가을의 곰을... 2011.11.01 14983
60 문서작성의 기술 가을의 곰을... 2011.10.31 7136
59 [JSP/JAVA] 최상위, 파일 경로 알아내기 가을의 곰을... 2011.10.26 10308
58 오픈소스 강의 (Lecture of OpenSource) 가을의 곰을... 2011.10.14 6553
57 우분투 10.10(64bit)에서 안드로이드 소스(Gingerbread) 빌드하기 가을의 곰을... 2011.10.06 12044
56 스타벅스에서 Arduino 개발 연습하기..... file 가을의 곰을... 2011.09.25 10476
대표 김성준 주소 : 경기 용인 분당수지 U타워 등록번호 : 142-07-27414
통신판매업 신고 : 제2012-용인수지-0185호 출판업 신고 : 수지구청 제 123호 개인정보보호최고책임자 : 김성준 sjkim70@stechstar.com
대표전화 : 010-4589-2193 [fax] 02-6280-1294 COPYRIGHT(C) stechstar.com ALL RIGHTS RESERVED