'Programming/iBatis'에 해당되는 글 1건

  1. 2012/02/06 IBatis SQL Maps 개발자 가이드 1편

IBatis SQL Maps 개발자 가이드 1편

|

SOL Maps(com.ibatis.sqlmap.*)

 - 프로그래머에게 자바빈즈를 PreparedStatement파라미터와 ResultSets로 쉽게 맵핑할수 있도록 해줌.

 - 작동방법

   1.파라미터(자바빈즈 , Map 또는 원시래퍼)로써 객체를 제공

   2. 맴핑된 Statement를 실행한다.

      SQL Maps 프레임워크의 하는일의 다이어 그램

 

- 설치

  ibatis-common.jar, ibatis-sqlmap.jar , ibatis-dao.jar를 클래스 패스에 두면됨.

 

-버젼 update

 프로그램에 종속되지 않기 때문에 jar 파일만 바꾼다면 문제가 되지 않을 듯 싶다.

 

-SQL Map xml 설정파일

 

sqlMapConfig.xml

 

<?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>
 <!-- DB 연결정보 설정 프로퍼티 파일 -->
 <properties resource="실제 경로/db.properties" /> 
  <settings
   cacheModelsEnabled="true"
   enhancementEnabled="true"
   lazyLoadingEnabled="true"
   maxRequests="32"
   maxSessions="10"
   maxTransactions="5"
   useStatementnamespaces="false"
   />
  <typeAlias alias="order" type="testdomain.Order"/>

 

  <transactionManager type="JDBC"> 
    <dataSource type="SIMPLE">
      <property name="JDBC.Driver" value="${driver}"/>
      <property name="JDBC.ConnectionURL" value="${url}"/>
      <property name="JDBC.Username" value="${user}"/>
      <property name="JDBC.Password" value="${password}"/>
    </dataSource>
  </transactionManager>

 

  <sqlMap resource="실제경로/MemberSql.xml"/>
 
  <!--  more here...
  <sqlMap resource="????.xml"/>
  -->

</sqlMapConfig>

 

위 와 같은 내용이 sqlMapConfig 파일에 들어갈 수 있다.

 

1.<properties> 요소

  - DB 연결정보를 가지고 있는 properties 파일이다.

  - 사용방법

   driver=org.hsqldb.jdbcDriver    =>   <property name="JDBC.Driver" value="${driver}"/>

2.<settings> 요소

  - xml파일을 빌드하는 SqlMapClient  인터페이스를 위한 다양한 옵셥과 최적화를 설정함

 

 요소명 설명 
 maxRequests

SQL 문을 수행할수 있는 스레드 수 

maxSessions,maxtransactions< maxRequests

 maxSessions

주어진 시간동안 활성될 수 있는 세션의수

maxTransaction <maxSessions< maxRequests

 maxTransactions

 sqlMapClient.startTransaction()에 들어갈수 있는 스레드 최대갯수

maxSessions >=maxTransactions

maxRequests>maxTransactions

 cacheModelsEnabled  모든 캐쉬 모델을 가능하게 하거나 가능하지 않게 한다.(디버깅시 도움)
 lazyLoadingEnabled  모든 늦은(lazy)로딩을 가능하게 하거나 가능하지 않게 한다.(디버깅시 도움)
 enhancementEnabled  향상된 늦은(lazy)로딩처럼 최적화된 자바빈즈 속성접근을 휘해 런타임시 바이트코드 향상

 

3.<typeAlias>요소

  -  DTO클래스의 전제척인 클래스명을 참조하기 위한 짧은 이름을 명시한다.(returnClass 속성에 풀패키명을 적어주지 않아도 된다.)

 

4.<transactionManager>요소( ${} - >properties 값을 쓴다.)

  - 트랜잭션 관리를 설정하도록함.

  - type 속성 :  JDBC , JTA , EXTERNAL

type 속성 설명 
 JDBC  Connction commit(),rollback() 메소드를 통해 트랜잭션을 제어하기 위한 JDBC
 JTA  JTA전역 트랜잭션을 사용(다른 데이터 베이스나 트랜잭션 자원을 포함하는 더욱더 넓은 범위의 트랙잰션 표함)
 EXTERNAL  자신이 트랜잭션을 관리하도록한다. 읽기전용 데이터베이스에 유용하다.

 

5.<dataSource>요소

  - 트랜잭션관리자 설정의 포함된 부분

<transactionManager>

<dataSource ...>

</dataSource>

</transactionManager>

 

type 속성 설명 
SIMPLE

 - iBaits SimpleDataSource connection 풀링을 기초로함

 - 사용방법

<transactionManager type="JDBC">
 <dataSource type="SIMPLE">
  <property name="JDBC.Driver" value="${driver}"/>
  <property name="JDBC.ConnectionURL" value="${url}"/>
  <property name="JDBC.Username" value="${user}"/>
  <property name="JDBC.Password" value="${password}"/>
  <property name="Pool.MaximumActiveConnctions" value="10"/>  
  <property name="Pool.MaximumIdleConnections" value="10"/>  
  <property name="Pool.MaximumCheckoutTime" value="10"/>  
  <property name="Pool.TimeToWait" value="1000"/>  
  <property name="Pool.pingQuery" value="select * from dual"/>  
  <property name="Pool.PingEnabled" value="false"/>  
  <property name="Pool.PingConnectionsOlderThan" value="0"/>  
  <property name="Pool.PingConnectionsNotUsedFor" value="0"/>    
 </dataSource>
</transactionManager>

 DBCP

 - DataSourcr API를 통한 Connection 풀링 제공하기 위해 Jakarta DBCP(Database Connection Pool)를 사용

 - 사용방법

<transactionManager type="JDBC">
 <dataSource type="DBCP">
  <property name="JDBC.Driver" value="${driver}"/>
  <property name="JDBC.ConnectionURL" value="${url}"/>
  <property name="JDBC.Username" value="${user}"/>
  <property name="JDBC.Password" value="${password}"/>  
  <property name="Pool.MaximumActiveConnctions" value="10"/>  
  <property name="Pool.MaximumIdleConnections" value="10"/>  
  <property name="Pool.Maximumait" value="6000"/>    
  <property name="Pool.ValidationQuery" value="select * from ACCOUT"/>  
  <property name="Pool.LogAbandoned" value="false"/>  
  <property name="Pool.RemoveAbandoned" value="false"/>  
  <property name="Pool.RemoveAbandonedTimeout" value="5000"/>    
 </dataSource>
</transactionManager>
JNDI

 - JndiDataSourceFactory는 JNDI를 통해 DataSource에 접근하는 기능 제공

 - 일반적인 JDBC트랜잭션 관리

 - 사용방법

<transactionManager type="JDBC">
 <dataSource type="JNDI">
  <property name="DataSource" value="java:comp/env/jdbc/jpetstore"/>  
 </dataSource>
</transactionManager>

 - 전역 트랜잭션을 설정한다.

 - 사용방법

<transactionManager type="JTA">
<property name="UserTransaction" value="java:/ctx/con/UserTransaction"/>
 <dataSource type="JNDI">
  <property name="DataSource" value="java:comp/env/jdbc/jpetstore"/> 
 </dataSource>
</transactionManager>

 

6. <sqlMap>요소

 -  명시적으로 SOL Map 이나 다른 SQL Map 설정파일을 포함할때 사용

 - SqlMapClient 인스턴스에 의해 사용되는 각각의 SQL Map XML 파일은 반드시 선언되어야함.

<!--classpath Resources 클래스 패스다음 경로부터 -->

 <sqlMap resource="실제경로/MemberSql.xml"/>

<!--URl resources-->

 <sqlMap url="file:///c:/config/MemberSql.xml"/>

 

///////////////////////////////////////////////////////////////////////////////////////////

SqlMapConfig.xml의 핵심은

1. URL등 정보를 가지고 있음 - java 코딩에 매번 반복되던 정보를 가지고 있다.

2. sqlMap의 정보를 가지고 있다.






출처:  http://wjdtjsdk3621.blog.me/130074366866

다운로드
저작자 표시

'Programming > iBatis' 카테고리의 다른 글

IBatis SQL Maps 개발자 가이드 1편  (0) 2012/02/06
TRACKBACK 0 And COMMENT 0

Trackback http://babe9990.tistory.com/trackback/110 관련글 쓰기

prev | 1 | next