ibatis 프레임 워 크 에서 sqlMapConfig.xml 상세 설명

12165 단어 ibatis
ibatis 프레임 워 크 에서 sqlMapConfig.xml 상세 설명
http://zhaohe162.blog.163.com/blog/static/382167972010817343888/?suggestedreading&wumii
http://jun1986.iteye.com/blog/1225238
http://blog.sina.com.cn/s/blog_74fa15e10100qaf5.html
sqlMapConfig.xml

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

<!-- ibatis     -->
<sqlMapConfig>
	<!--             -->
	<properties resource="org/ibatis/config/SqlMapConfig.properties"/>
	
	<!--
		cacheModelsEnabled:     SqlMapConfig     
		enhancementEnabled:     POJO            geter/seter     ,               
		lazyLoadingEnabled:           
		errorTracingEnabled:         ,         "true"      
		maxRequests:        (Statement   )
		maxSession:   Session ,          SqlMapClient 
		maxTransactions:        
		useStatementNamespaces:     Statement    。 
		               ,sqlMap  namespace  
		      sqlMap  : <sqlMap namespace="User">   ,    sqlMap           "User"    。 
		 useStatementNamespaces="true"    ,Statement         , :sqlMap.update("User.updateUser",user); 
		      Statement      , : sqlMap.update("updateUser",user);                  ,Statement     。
	 -->
	<settings
		cacheModelsEnabled="true"
		enhancementEnabled="true"
		lazyLoadingEnabled="true"
		errorTracingEnabled="true"
		maxRequests="32"
		maxSessions="10"
		maxTransactions="5"
		useStatementNamespaces="false"
	/>
	
	<!--
		transactionManager:      ibatis      ,           : 
		1.JDBC	    JDBC Connection.commit/rollback      。  
		2.JTA	       JTA          。
		3.EXTERNAL	      ,  EJB   ibatis,  EJB                  。  ibatis                 。 
	 -->
	<transactionManager type="JDBC">
		<!-- dataSource:    transactionManager  ,    ibatis      DataSource  。
			type  :dataSource   type     dataSource     。
			 
			    : 
			SIMPLE: 
			SIMPLE ibatis   dataSource  ,          
			        ,   ibatis     
			com.ibatis.sqlmap.engine.datasource.SimpleDataSourceFactory。 
			
			DBCP: 
			  Apache DBCP        DataSource  ,      DataSource   ,       ,  ibatis    
			com.ibatis.sqlmap.engine.datasource.DbcpDataSourceFactory。 
			
			JNDI:
			  J2EE     DataSource  ,DataSource      JNDI Name      。   ibatis    
			com.ibatis.sqlmap.engine.datasource.JndiDataSourceFactory。
		 -->
		<dataSource type="SIMPLE">
			<!-- JDBC   -->
			<property name="JDBC.Driver" value="${driver}"/>
			<!-- URL -->
			<property name="JDBC.ConnectionURL" value="${url}"/>
			<!--    userName -->
			<property name="JDBC.Username" value="${userName}"/>
			<!--    password -->
			<property name="JDBC.Password" value="${password}"/>
			<!--                -->
			<property name="Pool.MaximumActiveConnections" value = "10"/>
			<!--             (idle)    -->
			<property name="Pool.MaximumIdleConnections" value="5"/>
			<!--        ,                -->
			<property name="Pool.MaximumCheckoutTime" value="120000"/>
			<!--               ,         ,                  -->
			<property name="Pool.TimeToWait" value="500"/>
			<!--             -->
	        <property name="Pool.PingQuery" value ="select 1 from ACCOUNT"/>
	        <!--            -->  
	        <property name="Pool.PingEnabled" value ="false"/>
	        <!--                   -->  
	        <property name="Pool.PingConnectionsOlderThan" value ="1"/>
	        <!--                 -->  
	        <property name="Pool.PingConnectionsNotUsedFor" value ="1"/>
		</dataSource>
	</transactionManager>
	
	<sqlMap resource="org/ibatis/hyf/maps/User.xml"/>
</sqlMapConfig>

(1)설정 노드
cacheModelsEnabled 
SqlMapClient 의 캐 시 메커니즘 을 사용 할 지 여부 입 니 다."true"로 설정 하 는 것 을 권장 합 니 다.
enhancementEnabled 
POJO 에서 바이트 코드 증강 기 getter/setter 의 호출 효능 을 사용 하여 Reflect 가 가 져 오 는 성능 비용 을 피 할 지 여부 입 니 다.또한 레이 지 로 딩 에 도 향상 을 가 져 왔 다."true"로 설정 하 는 것 을 권장 합 니 다.
errorTracingEnabled
오류 로 그 를 사용 할 지 여부 입 니 다.개발 기간 동안 디 버 깅 에 편리 하도록"true"로 설정 하 는 것 을 권장 합 니 다.
lazyLoadingEnabled
지연 로드 메커니즘 을 사용 할 지 여부 입 니 다."true"로 설정 하 는 것 을 권장 합 니 다.
maxRequests
최대 동시 다발 요청 수(Statement 동시 다발 수)
maxTransactions 
최대 병렬 트 랜 잭 션 수
maxSessions  최대 세 션 수.현재 최대 허용 되 는 병렬 SqlMapClient 수 입 니 다.
useStatementNamespaces 
Statement 네 임 스페이스 를 사용 할 지 여부 입 니 다.
이 네 임 스페이스 는 맵 파일 에서 sqlMap 절의 namespace 속성 을 말 합 니 다.예 를 들 어 상기 에서 tuse
표 의 맵 파일 sqlMap 노드:여기 서 이 sqlMap 노드 에서 정의 하 는 작업 은 모두"User"네 임 스페이스 에 속 합 니 다.useStatementNamespaces="true"의 경우 Statement 호출 은 sqlMap.update("User.updateUser",user)와 같은 네 임 스페이스 를 추가 해 야 합 니 다.
그렇지 않 으 면 sqlMap.update("updateUser",user)와 같이 Statement 이름 으로 직접 호출 하면 됩 니 다.그러나 이 때 모든 맵 파일 에서 Statement 정의 가 이름 이 바 뀌 지 않도록 해 야 합 니 다.
트 랜 잭 션 관리자 노드
transactionManager 노드 는 ibatis 의 사무 관리 자 를 정의 합 니 다.현재 다음 과 같은 몇 가 지 를 제공 합 니 다.
종류 선택:
  JDBC
전통 적 인 JDBC Connection.comit/rollback 을 통 해 사무 지원 을 실현 합 니 다. 
JTA
용기 에서 제공 하 는 JTA 서 비 스 를 사용 하여 전역 사무 관 리 를 실현 합 니 다.
   EXTERNAL
EJB 에서 ibatis 를 사용 하 는 경우 EJB 의 배치 설정 을 통 해 외부 트 랜 잭 션 관 리 를 수행 할 수 있 습 니 다.
움 직 이 는 사무 관리 체제.이 때 ibatis 는 모든 업 무 를 외부 용기 에 위탁 하여 관리 할 것 입 니 다.
dataSource 노드
  dataSource 는 transactionManager 노드 에 속 하 며 ibatis 런 타임 에 사용 할 DataSource 속성 을 설정 합 니 다.
type 속성:
dataSource 노드 의 type 속성 은 dataSource 의 실현 유형 을 지정 합 니 다.선택 가능 한 항목:
SIMPLE:
  SIMPLE 는 ibatis 에 내 장 된 dataSource 의 실현 으로 그 중에서 간단 한 것 을 실현 했다.
데이터베이스 연결 탱크 메커니즘
com.ibatis.sqlmap.engine.datasource.SimpleDataSourceFactory。
DBCP:
  아파 치 DBCP 연결 풀 구성 요소 기반 DataSource 패키지
DataSource 서 비 스 를 제공 할 때 이 옵션 을 사용 하 는 것 을 권장 합 니 다.ibatis 구현 클래스 는?
com.ibatis.sqlmap.engine.datasource.DbcpDataSourceFactory。
JNDI:
J2EE 용기 에서 제공 하 는 DataSource 를 사용 하면 DataSource 가 지 정 됩 니 다.
의 JNDI Name 을 용기 에서 가 져 옵 니 다.대응 ibatis 구현 클래스 는
com.ibatis.sqlmap.engine.datasource.JndiDataSourceFactory。
dataSource 의 하위 노드 설명(SIMPLE&DBCP):
JDBC.Driver  JDBC 드라이버.
org.gjt.mm.mysql.Driver
JDBC.ConnectionURL 
데이터베이스 URL.
jdbc:mysql://localhost/sample
SQLServer JDBC Driver 를 사용한다 면 필요 합 니 다.
url 이후 SelectMethod=Cursor 를 추가 하여 획득
JDBC 업무 의 다 중 Statement 지원.
JDBC.Username
  데이터베이스 사용자 이름
JDBC.Password 
데이터베이스 사용자 암호
Pool.MaximumActiveConnections
데이터베이스 연결 탱크 가 유지 할 수 있 는 최대 용량.
Pool.MaximumIdleConnections
데이터베이스 연결 탱크 에서 허용 하 는 연결 수 입 니 다.
JNDI 는 대부분의 설정 이 응용 서버 에서 이 루어 지기 때문에 ibatis 의 설정 이 상대 적 으로 간단 합 니 다.
JDBC 와 JTA 사무 관 리 를 각각 사용 하 는 JDNI 설정:
JDBC 트 랜 잭 션 관 리 를 위 한 JNDI DataSource 설정 사용 하기
< transactionManager  type ="JDBC"   > 
< dataSource  type ="JNDI" > 
< property  name ="DataSource"  
value ="java:comp/env/jdbc/myDataSource" /> 
 
 
< transactionManager  type ="JTA"   > 
< property  name ="UserTransaction"  
value ="java:/ctx/con/UserTransaction" /> 
< dataSource  type ="JNDI" > 
< property  name ="DataSource"  
value ="java:comp/env/jdbc/myDataSource" /> 
    sqlMap 노드
sqlMap 노드 는 맵 파일 의 위 치 를 지정 합 니 다.설정 에 여러 개의 sqlMap 노드 가 나타 나 서 지정 할 수 있 습 니 다.
프로젝트 에 포 함 된 모든 맵 파일 입 니 다.
ibatis 기초 의미
XmlSqlMapClientBuilder
XmlSqlMapClient Builder 는 ibatis 2.0 이후 버 전에 새로 도 입 된 구성 요소 로 1.x 를 대체 합 니 다.
버 전의 XmlSqlMapBuilder.설정 파일 에 따라 SqlMapClient 인 스 턴 스 를 만 드 는 역할 을 합 니 다.
SqlMapClient
SqlMapClient 는 ibatis 의 핵심 구성 요소 로 데이터 조작 을 제공 하 는 기초 플랫폼 입 니 다.SqlMapClient
XmlSqlMapClient Builder 를 통 해 만 들 수 있 습 니 다:
String resource  = " com/ibatis/sample/SqlMapConfig.xml " ;
Reader reader;
reader  =  Resources.getResourceAsReader(resource);
XmlSqlMapClientBuilder xmlBuilder  =  
new  XmlSqlMapClientBuilder();
SqlMapClient sqlMap  =  xmlBuilder.buildSqlMap(reader);  "com/ibatis/sample/sql MapConfig.xml"설정 파일 이 CLASSPATH 에 있 음 을 가리 키 고 있 습 니 다.
상대 경로 입 니 다.XmlSqlMapClient Builder 는 Reader 형식의 설정 문 을 받 아들 입 니 다.
구성 인자 에 따라 SqlMapClient 인 스 턴 스 를 만 듭 니 다.
SqlMapClient 는 많은 데이터 조작 방법 을 제공 하 였 으 며,다음은 자주 사용 하 는 방법의 예시 이 며,구체 적 으로 설명 한다.
문 서 는 ibatis 자바 doc 또는 ibatis 공식 개발 매 뉴 얼 을 참조 하 십시오.
SqlMapClient 기본 조작 예시
다음 예 는 ibatis 공식 개발 매 뉴 얼 에서 따 온 것 으로 필 자 는 이 를 재 구성 하여 더욱 좋 은 읽 기 효 과 를 얻 었 다.
예 1:데이터 기록 작업(insert,update,delete):
sqlMap.startTransaction();
Product product  =   new  Product();
product.setId ( 1 );
product.setDescription (“Shih Tzu”);
int  rows  =  sqlMap.insert (“insertProduct”, product);
sqlMap.commitTransaction();  예 2:데이터 조회(select)
sqlMap.startTransaction();
Integer key  =   new  Integer ( 1 );
Product product  =  (Product)sqlMap.queryForObject
(“getProduct”, key);
sqlMap.commitTransaction();  예 3:지정 한 대상 에 검색 결 과 를 저장 합 니 다(select) 
sqlMap.startTransaction();
Customer customer  =   new  Customer();
sqlMap.queryForObject(“getCust”, parameterObject, customer);
sqlMap.queryForObject(“getAddr”, parameterObject, customer);
sqlMap.commitTransaction();  예 4:대량 조회 실행(select)
sqlMap.startTransaction();
List list  =  sqlMap.queryForList (“getProductList”,  null )
sqlMap.commitTransaction();  예 5:AutoCommit 에 대하 여
//startTransaction 을 미리 실행 하지 않 았 을 때 기본 값 은 autocommt 모드 
int  rows  =  sqlMap.insert (“insertProduct”, product);  예 6:지정 한 범위 내의 데 이 터 를 조회 합 니 다.
sqlMap.startTransaction();
List list  =  sqlMap.queryForList (“getProductList”,  null ,  0 ,  40 );
sqlMap.commitTransaction();  예 7:RowHandler 와 결합 하여 조회(select)
public   class  MyRowHandler  implements  RowHandler   {
    public   void  handleRow (Object object, List list)  throws 
    SQLException   {
      Product product  =  (Product) object;
      product.setQuantity ( 10000 );
      sqlMap.update (“updateProduct”, product);
    } 

sqlMap.startTransaction();
RowHandler rowHandler  =   new  MyRowHandler();
List list  =  sqlMap.queryForList (“getProductList”,  null ,
rowHandler);
sqlMap.commitTransaction();  
//예 8:페이지 별 조회(select) 
PaginatedList list  = 
sqlMap.queryForPaginatedList (“getProductList”,  null ,  10 );
list.nextPage();
list.previousPage();
//예 9:맵 기반 대량 조회(select) 
sqlMap.startTransaction();
Map map  =  sqlMap.queryForMap (“getProductList”,  null ,
“productCode”);
sqlMap.commitTransaction();
Product p  =  (Product) map.get(“EST - 93 ”); 

좋은 웹페이지 즐겨찾기