现在的位置: 首页 > 综合 > 正文

ibatis sqlmapconfig 配置详解

2013年10月04日 ⁄ 综合 ⁄ 共 6064字 ⁄ 字号 评论关闭
  1. <?xml version="1.0" encoding="UTF-8" ?>  
  2.   
  3. <!DOCTYPE sqlMapConfig        
  4.     PUBLIC "-//ibatis.apache.org//DTD SQL Map Config 2.0//EN"        
  5.     "http://ibatis.apache.org/dtd/sql-map-config-2.dtd">  
  6.   
  7. <sqlMapConfig>  
  8.   
  9.  <!--   
  10.     <properties resource="properties/database.properties"/>  
  11.     可将SqlMap中的<property />内容写到配置文件中,从此处引用。  
  12.     SQL Map配置文件及其每个映射文件都可以使用占位符${}  
  13.  -->  
  14.   
  15.     <settings   
  16.         cacheModelsEnabled="true"   
  17.         enhancementEnabled="true"   
  18.         lazyLoadingEnabled="true"   
  19.         errorTracingEnabled="true"   
  20.         maxRequests="32"   
  21.         maxSessions="10"   
  22.         maxTransactions="5"   
  23.         useStatementNamespaces="false"   
  24.     />  
  25.       
  26. <!--   
  27.     <settings   
  28.           
  29.         cacheModelsEnabled="true"   
  30.         是否启用SqlMapClient上的缓存机制。   
  31.         建议设为"true"   
  32.           
  33.         enhancementEnabled="true"   
  34.         是否针对POJO启用字节码增强机制以提升  
  35.         getter/setter的调用效能,避免使用Java   
  36.         Reflect所带来的性能开销。   
  37.         同时,这也为Lazy Loading带来了极大的性能  
  38.         提升。   
  39.         建议设为"true"   
  40.           
  41.         lazyLoadingEnabled="true"   
  42.         是否启用延迟加载机制,建议设为"true"   
  43.           
  44.         errorTracingEnabled="true"   
  45.         是否启用错误日志,在开发期间建议设为"true"  
  46.         以方便调试   
  47.           
  48.         maxRequests="32"   
  49.         最大并发请求数(Statement并发数)   
  50.           
  51.         maxSessions="10"   
  52.         最大Session数。即当前最大允许的并发  
  53.         SqlMapClient 数。   
  54.         maxSessions设定必须介于  
  55.         maxTransactions和maxRequests之间,即   
  56.         maxTransactions<maxSessionsmaxSessions=<maxRequests   
  57.           
  58.         maxTransactions="5"   
  59.         最大并发事务数   
  60.           
  61.         useStatementNamespaces="false"   
  62.         是否使用Statement命名空间。   
  63.         这里的命名空间指的是映射文件中, sqlMap节点  
  64.         的namespace属性,如在上例中针对t_user  
  65.         表的映射文件sqlMap节点:   
  66.         <sqlMap namespace="User">   
  67.         这里,指定了此sqlMap节点下定义的操作均从  
  68.         属于"User"命名空间。   
  69.         useStatementNamespaces="true"的情  
  70.         况下,Statement调用需追加命名空间,如:  
  71.         sqlMap.update("User.updateUser",user);   
  72.         否则直接通过Statement名称调用即可,如:   
  73.         sqlMap.update("updateUser",user);   
  74.         但请注意此时需要保证所有映射文件中,  
  75.         Statement定义无重名。   
  76.     />     
  77.       
  78.  -->  
  79.   
  80.    
  81.   <transactionManager type="JDBC" commitRequired="false">  
  82.     
  83.    <!--  
  84.         <transationManager>元素让您为SQL Map配置事务管理服务。  
  85.         属性type指定所使用的事务管理器类型。  
  86.         这个属性值可以是一个类名,也可以是一个别名。  
  87.         包含在框架的三个事务管理器分别是:JDBC,JTA和EXTERNAL。  
  88.           
  89.         JDBC:通过常用的Connection commit()和rollback()方法,让JDBC管理事务。  
  90.           
  91.         JTA:本事务管理器使用一个JTA全局事务,使SQL Map的事务包括在更大的事务范围内,  
  92.              这个更大的事务范围可能包括了其他的数据库和事务资源。  
  93.              这个配置需要一个UserTransaction属性,以便从JNDI获得一个UserTransaction。  
  94.           
  95.         EXTERNAL:这个配置可以让您自己管理事务。您仍然可以配置一个数据源,  
  96.                   但事务不再作为框架生命周期的一部分被提交或回退。  
  97.                   这意味着SQL Map外部应用的一部分必须自己管理事务。  
  98.                   这个配置也可以用于没有事务管理的数据库(例如只读数据库)。  
  99.   
  100.     -->  
  101.     
  102.     <dataSource type="DBCP">  
  103.   <!--      
  104.     <datasource><transactionManager>的一部分,  
  105.         为SQL Map数据源设置了一系列参数。  
  106.         目前SQL Map架构只提供三个DataSource Factory,但您也可以添加自己的实现。  
  107.           
  108.         SIMPLE: SimpleDataSourceFactory为DataSource提供了一个基本的实现,  
  109.                 适用于在没有J2EE容器提供DataSource的情况。  
  110.                 它基于iBatis的SimpleDataSource连接池实现。                      
  111.                   
  112.        DBCP: DbcpDataSourceFactory实现使用Jakarta DBCP  
  113.             (Database Connection Pool)的DataSource API提供连接池服务。  
  114.             适用于应用/Web容器不提供DataSource服务的情况,或执行一个单独的应用。  
  115.               
  116.        JNDI: JndiDataSourceFactory在应用容器内部从JNDI Context中  
  117.              查找DataSource实现。当使用应用服务器,并且服务器提供了容器管理的连  
  118.              接池和相关DataSource实现的情况下,可以使用JndiDataSourceFactory。  
  119.              使用JDBC DataSource的标准方法是通过JNDI来查找。  
  120. -->  
  121.   
  122.   
  123.       <property name="JDBC.Driver"   
  124.                 value="net.sourceforge.jtds.jdbc.Driver"/>  
  125.       <property name="JDBC.ConnectionURL"   
  126.                 value="jdbc:jtds:sqlserver://127.0.0.1:1433/EXTFFM"/>  
  127.       <property name="JDBC.Username" value="sa"/>  
  128.       <property name="JDBC.Password" value="sa"/>  
  129.   
  130.  <!--  
  131.           SQL Map配置文件拥有唯一的<properties>元素,  
  132.           用于在配置文件中使用标准的Java属性文件(name=value)。  
  133.           这样做后,在属性文件中定义的属性可以作为变量在SQL Map配置文件  
  134.           及其包含的所有SQL Map映射文件中引用。  
  135.             
  136.           例如,如果属性文件中包含属性:  
  137.           driver=org.hsqldb.jdbcDriver  
  138.           SQL Map配置文件及其每个映射文件都可以使用占位符${driver}  
  139.           来代表值org.hsqldb.jdbcDriver。例如:  
  140.           <property name="JDBC.Driver" value="${driver}"/>  
  141.       -->  
  142.   
  143.         
  144.       <property name="Pool.MaximumActiveConnections" value="10"/>  
  145.       <!-- 数据库连接池可维持的最大容量。缺省值: 10 -->  
  146.         
  147.       <property name="Pool.MaximumIdleConnections" value="5"/>  
  148.        <!-- 数据库连接池中允许的挂起(idle)连接数。缺省值: -->  
  149.          
  150.       <property name="Pool.TimeToWait" value="500" />  
  151. <!--   
  152.          当线程试图从连接池中获取连接时,连接池中无可用连接可供使用,  
  153.          此时线程将进入等待状态,直到池中出现空闲连接。  
  154.          此参数设定了线程所允许等待的最长时间(单位:毫秒)缺省值: 10   
  155. -->  
  156.   
  157.       <property name="Pool.MaximumCheckoutTime" value="120000"/>  
  158.               
  159. <!--   
  160.         数据库联接池中,连接被某个任务所允许占用的最大时间,  
  161.         如果超过这个时间限定,连接将被强制收回(单位:毫秒)。  
  162.         缺省值: 20000   
  163. -->  
  164.         
  165.                     
  166.       <property name="Pool.PingQuery" value="seslct from FFM_Sequence" />  
  167.  <!--  
  168.         数据库连接状态检测语句。  
  169.         某些数据库在连接在某段时间持续处于空闲状态时会将其断开。  
  170.         而连接池管理器将通过此语句检测池中连接是否可用。  
  171.         它对性能的影响较大,应小心使用。检测语句应该是一个最简化的无逻辑SQL,  
  172.         如:select from dual缺省值: N/A  
  173. -->       
  174.         
  175.       <property name="Pool.PingEnabled" value="false" />  
  176.        <!-- 是否允许检测连接状态。缺省值: false -->  
  177.          
  178.       <property name="Pool.PingConnectionsOlderThan" value="1" />  
  179.        <!-- 对持续连接时间超过设定值(毫秒)的连接进行检测。缺省值: -->  
  180.         
  181.       <property name="Pool.PingConnectionsNotUsedFor" value="1" />  
  182.       <!-- 对空闲超过设定值(毫秒)的连接进行检测。缺省值: -->  
  183.     </dataSource>  
  184.   </transactionManager>  
  185.   
  186.   <sqlMap resource="com/witnessj/ffm/domain/IBatisSqlMap/SequenceSqlMap.xml"/>  
  187.     <!--  
  188.         <sqlMap>元素用于包括SQL Map映射文件和其他的SQL Map配置文件。  
  189.         每个SqlMapClient对象使用的所有SQL Map映射文件都要在此声明。  
  190.         映射文件作为stream resource从类路径或URL读入。  
  191.         您必须在这里指定所有的SQL Map文件。  
  192.           
  193.         List more here...  
  194.       <sqlMap resource="com/mydomain/data/Order.xml"/>  
  195.       <sqlMap resource="com/mydomain/data/Documents.xml"/>  
  196.     -->  
  197.   
  198. </sqlMapConfig>
【上篇】
【下篇】

抱歉!评论已关闭.