`
Chrislee
  • 浏览: 64404 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

iBATIS sqlMapConfig配置详解

阅读更多
<?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>

 <!-- 
 	<properties resource="properties/database.properties"/>
 	可将SqlMap中的<property />内容写到配置文件中,从此处引用。
 	SQL Map配置文件及其每个映射文件都可以使用占位符${}
 -->

	<settings 
		cacheModelsEnabled="true" 
		enhancementEnabled="true" 
		lazyLoadingEnabled="true" 
		errorTracingEnabled="true" 
		maxRequests="32" 
		maxSessions="10" 
		maxTransactions="5" 
		useStatementNamespaces="false" 
	/>
	
<!-- 
	<settings 
		
		cacheModelsEnabled="true" 
		是否启用SqlMapClient上的缓存机制。 
		建议设为"true" 
		
		enhancementEnabled="true" 
		是否针对POJO启用字节码增强机制以提升
		getter/setter的调用效能,避免使用Java 
		Reflect所带来的性能开销。 
		同时,这也为Lazy Loading带来了极大的性能
		提升。 
		建议设为"true" 
		
		lazyLoadingEnabled="true" 
		是否启用延迟加载机制,建议设为"true" 
		
		errorTracingEnabled="true" 
		是否启用错误日志,在开发期间建议设为"true"
		以方便调试 
		
		maxRequests="32" 
		最大并发请求数(Statement并发数) 
		
		maxSessions="10" 
		最大Session数。即当前最大允许的并发
		SqlMapClient 数。 
		maxSessions设定必须介于
		maxTransactions和maxRequests之间,即 
		maxTransactions<maxSessions=<maxRequests 
		
		maxTransactions="5" 
		最大并发事务数 
		
		useStatementNamespaces="false" 
		是否使用Statement命名空间。 
		这里的命名空间指的是映射文件中, sqlMap节点
		的namespace属性,如在上例中针对t_user
		表的映射文件sqlMap节点: 
		<sqlMap namespace="User"> 
		这里,指定了此sqlMap节点下定义的操作均从
		属于"User"命名空间。 
		在useStatementNamespaces="true"的情
		况下,Statement调用需追加命名空间,如:
		sqlMap.update("User.updateUser",user); 
		否则直接通过Statement名称调用即可,如: 
		sqlMap.update("updateUser",user); 
		但请注意此时需要保证所有映射文件中,
		Statement定义无重名。 
	/>	
	
 -->

 
  <transactionManager type="JDBC" commitRequired="false">
  
   <!--
        <transationManager>元素让您为SQL Map配置事务管理服务。
        属性type指定所使用的事务管理器类型。
        这个属性值可以是一个类名,也可以是一个别名。
        包含在框架的三个事务管理器分别是:JDBC,JTA和EXTERNAL。
        
        JDBC:通过常用的Connection commit()和rollback()方法,让JDBC管理事务。
        
        JTA:本事务管理器使用一个JTA全局事务,使SQL Map的事务包括在更大的事务范围内,
             这个更大的事务范围可能包括了其他的数据库和事务资源。
             这个配置需要一个UserTransaction属性,以便从JNDI获得一个UserTransaction。
        
        EXTERNAL:这个配置可以让您自己管理事务。您仍然可以配置一个数据源,
                  但事务不再作为框架生命周期的一部分被提交或回退。
                  这意味着SQL Map外部应用的一部分必须自己管理事务。
                  这个配置也可以用于没有事务管理的数据库(例如只读数据库)。

    -->
  
    <dataSource type="DBCP">
  <!--    
    <datasource>是<transactionManager>的一部分,
        为SQL Map数据源设置了一系列参数。
        目前SQL Map架构只提供三个DataSource Factory,但您也可以添加自己的实现。
        
        SIMPLE: SimpleDataSourceFactory为DataSource提供了一个基本的实现,
                适用于在没有J2EE容器提供DataSource的情况。
                它基于iBatis的SimpleDataSource连接池实现。                    
                
       DBCP: DbcpDataSourceFactory实现使用Jakarta DBCP
            (Database Connection Pool)的DataSource API提供连接池服务。
            适用于应用/Web容器不提供DataSource服务的情况,或执行一个单独的应用。
            
       JNDI: JndiDataSourceFactory在应用容器内部从JNDI Context中
             查找DataSource实现。当使用应用服务器,并且服务器提供了容器管理的连
             接池和相关DataSource实现的情况下,可以使用JndiDataSourceFactory。
             使用JDBC DataSource的标准方法是通过JNDI来查找。
-->


      <property name="JDBC.Driver" 
                value="net.sourceforge.jtds.jdbc.Driver"/>
      <property name="JDBC.ConnectionURL" 
	            value="jdbc:jtds:sqlserver://127.0.0.1:1433/EXTFFM"/>
      <property name="JDBC.Username" value="sa"/>
      <property name="JDBC.Password" value="sa"/>

 <!--
          SQL Map配置文件拥有唯一的<properties>元素,
          用于在配置文件中使用标准的Java属性文件(name=value)。
          这样做后,在属性文件中定义的属性可以作为变量在SQL Map配置文件
          及其包含的所有SQL Map映射文件中引用。
          
          例如,如果属性文件中包含属性:
          driver=org.hsqldb.jdbcDriver
          SQL Map配置文件及其每个映射文件都可以使用占位符${driver}
          来代表值org.hsqldb.jdbcDriver。例如:
          <property name="JDBC.Driver" value="${driver}"/>
      -->

      
      <property name="Pool.MaximumActiveConnections" value="10"/>
      <!-- 数据库连接池可维持的最大容量。缺省值: 10 -->
      
      <property name="Pool.MaximumIdleConnections" value="5"/>
       <!-- 数据库连接池中允许的挂起(idle)连接数。缺省值: 5 -->
       
      <property name="Pool.TimeToWait" value="500" />
<!-- 
         当线程试图从连接池中获取连接时,连接池中无可用连接可供使用,
         此时线程将进入等待状态,直到池中出现空闲连接。
         此参数设定了线程所允许等待的最长时间(单位:毫秒)缺省值: 10 
-->

      <property name="Pool.MaximumCheckoutTime" value="120000"/>
            
<!-- 
        数据库联接池中,连接被某个任务所允许占用的最大时间,
        如果超过这个时间限定,连接将被强制收回(单位:毫秒)。
        缺省值: 20000 
-->
      
                  
      <property name="Pool.PingQuery" value="seslct 1 from FFM_Sequence" />
 <!--
	    数据库连接状态检测语句。
	    某些数据库在连接在某段时间持续处于空闲状态时会将其断开。
	    而连接池管理器将通过此语句检测池中连接是否可用。
	    它对性能的影响较大,应小心使用。检测语句应该是一个最简化的无逻辑SQL,
	    如:select 1 from dual缺省值: N/A
-->     
      
      <property name="Pool.PingEnabled" value="false" />
       <!-- 是否允许检测连接状态。缺省值: false -->
       
      <property name="Pool.PingConnectionsOlderThan" value="1" />
       <!-- 对持续连接时间超过设定值(毫秒)的连接进行检测。缺省值: 0 -->
      
      <property name="Pool.PingConnectionsNotUsedFor" value="1" />
      <!-- 对空闲超过设定值(毫秒)的连接进行检测。缺省值: 0 -->
    </dataSource>
  </transactionManager>

  <sqlMap resource="com/witnessj/ffm/domain/IBatisSqlMap/SequenceSqlMap.xml"/>
    <!--
        <sqlMap>元素用于包括SQL Map映射文件和其他的SQL Map配置文件。
        每个SqlMapClient对象使用的所有SQL Map映射文件都要在此声明。
        映射文件作为stream resource从类路径或URL读入。
        您必须在这里指定所有的SQL Map文件。
        
        List more here...
	  <sqlMap resource="com/mydomain/data/Order.xml"/>
	  <sqlMap resource="com/mydomain/data/Documents.xml"/>
    -->

</sqlMapConfig>



转载请注明: http://chrislee.iteye.com/
分享到:
评论
2 楼 tracy821 2011-11-08  
写的很详细,谢谢。
1 楼 jspc 2011-09-27  
thanks
楼主
了解了

相关推荐

Global site tag (gtag.js) - Google Analytics