配置orm之ibatis的数据库连接池及事物

Xml代码   收藏代码
  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. <!--   
  8.     Settings各节点的说明:  
  9.     cacheModelsEnable :是否启用SqlMapClient上的缓存机制,建议设为true;  
  10.     enhancementEnabled:是否针对POJO启用字节码增加机制以提升getter/setter的调用效能,避免使用Java reflect所带来的性能开销,  
  11.                        同时也为Lazy Loading带来了极大的性能提升,建议设置为true;  
  12.     lazyLoadingEnabled:是否启用延迟加载机制,建议设为"true";  
  13.     errorTracingEnabled:是否启用错误日志,在开发期间建议设为"true" 以方便调试;  
  14.     maxRequests:最大并发请求数(Statement并发数);  
  15.     maxSessions:最大Session 数。即当前最大允许的并发SqlMapClient数。maxSessions设定必须介于maxTransactions和maxRequests之间,  
  16.                  即maxTransactions<maxSessionsmaxSessions=<maxRequests;  
  17.     maxTransactions:最大并发事务数;  
  18.     useStatementNamespaces:是否使用Statement命名空间。这里的命名空间指的是映射文件中,sqlMap节点的namespace属性,如针对users表的映射文件sqlMap节点:  
  19.                            <sqlMap namespace="Users">这里,指定了此sqlMap节点下定义的操作均从属于"Users"命名空间。在useStatementNamespaces="true"的情况  
  20.                            下,Statement调用需追加命名空间,如:sqlMap.update("Users.updateUser",user);否则直接通过Statement名称调用即可,如:  
  21.                            sqlMap.update("updateUser",user);但请注意此时需要保证所有映射文件中,Statement定义无重名。  
  22.  -->  
  23. <sqlMapConfig>  
  24.     <settings   
  25.         cacheModelsEnabled="true"   
  26.         enhancementEnabled="true"   
  27.         lazyLoadingEnabled="true"   
  28.         errorTracingEnabled="true"   
  29.         maxRequests="32"   
  30.         maxSessions="10"   
  31.         maxTransactions="5"   
  32.         useStatementNamespaces="true"   
  33.     />  
  34.     <!--   
  35.     transactionManager节点定义了iBatis的事务管理器,提供三种方式,(1、JDBC,2、jta:分布式数据库,3、EXTERNAL:itbatis本身不做事务处理由外部进行处理);  
  36.         dataSource节点:从属于transactionManager节点,用于设定ibatis运行期使用的DataSource属性;  
  37.             type属性:type属性指定了dataSource的实现模式,共三种模式,(1、simple:ibatis提供的较小的连接池 2、dbcp:是apache实现的连接池                                                              3、jndi:tomcate或weblogic提供的服务);  
  38.             JDBC.Driver:JDBC驱动;  
  39.             JDBC.ConnectionURL:数据库连接URL,如果用的是SQLServer JDBC Driver,需要在url后追加SelectMethod=Cursor以获得JDBC事务的多Statement支持;  
  40.             JDBC.Username:数据库用户名;  
  41.             JDBC.Password:数据库用户密码;  
  42.             Pool.MaximumActiveConnections:数据库连接池可维持的最大容量;  
  43.             Pool.MaximumIdleConnections:数据库连接池中允许的挂起(idle)连接数;  
  44.             Pool.MaximumCheckoutTime数据库连接池中,连接被某个任务所允许占用的最大时间,如果超过这个时间限定,连接将被强制收回,(毫秒);  
  45.             Pool.TimeToWait:当线程试图从连接池中获取连接时,连接池中无可用连接可供使用,此时线程将进入等待状态,直到池中出现空闲连接。此参数设定了线程所允许等待的最长时间,(毫秒);  
  46.             Pool.PingQuery:数据库连接状态检测语句。某些数据库在某段时间持续处于空闲状态时会将其断开。而连接池管理器将通过此语句检测池中连接是否可用,  
  47.                             检测语句应该是一个最简化的无逻辑SQL。如“select 1 from user”,如果执行此语句成功,连接池管理器将认为此连接处于可用状态;  
  48.             Pool.PingEnabled:是否允许检测连接状态;  
  49.             Pool.PingConnectionsOlderThan:对持续连接时间超过设定值(毫秒)的连接进行检测;  
  50.             Pool.PingConnectionsNotUsedFor:对空闲超过设定值(毫秒)的连接进行检测;    
  51.             -->  
  52.   <transactionManager type="JDBC" commitRequired="true">  
  53.     <dataSource type="SIMPLE">  
  54.       <property name="JDBC.Driver" value="com.mysql.jdbc.Driver"/>  
  55.       <property name="JDBC.ConnectionURL" value="jdbc:mysql://localhost:3306/company"/>  
  56.       <property name="JDBC.Username" value="root"/>  
  57.       <property name="JDBC.Password" value="11"/>       
  58.       <property name="Pool.MaximumActiveConnections" value="10" />  
  59.       <property name="Pool.MaximumIdleConnections" value="5" />  
  60.       <property name="Pool.MaximumCheckoutTime" value="120000" />  
  61.       <property name="Pool.TimeToWait" value="500" />  
  62.       <property name="Pool.PingQuery" value="select 1 from ACCOUNT" />  
  63.       <property name="Pool.PingEnabled" value="false" />  
  64.       <property name="Pool.PingConnectionsOlderThan" value="1" />  
  65.       <property name="Pool.PingConnectionsNotUsedFor" value="1" />  
  66.     </dataSource>  
  67.   </transactionManager>  
  68.   <sqlMap resource="news.xml"/>  
  69. </sqlMapConfig>  
Xml代码   收藏代码
  1. commitRequired为true,即默认为自动提交事物。  
Xml代码   收藏代码
  1. commitRequired为false,即以手动的方法提交事物。   

 示例:

Java代码   收藏代码
  1. public void delete(String newsId) {  
  2.     logger.debug(StringUtil.append("delete()", BEGIN));  
  3.     SqlMapClient sqlMapClient=IbatisUtil.getInstance().getSqlMapClient();  
  4.     try {  
  5.        sqlMapClient.startTransaction();             //开始事物  
  6.      sqlMapClient.delete("deleteNews",newsId);      
  7.        sqlMapClient.commitTransaction();         //提交事物  
  8.     } catch (SQLException e) {            
  9.       logger.debug(StringUtil.append("delete()",e.getMessage()));  
  10.     }finally{  
  11.       try {  
  12.         sqlMapClient.endTransaction();             //结束事物  
  13.       } catch (SQLException e) {  
  14.         logger.error(StringUtil.append("delete()",e.getMessage()));  
  15.       }  
  16.     }  
  17.     logger.debug(StringUtil.append("delete()",END));  
  18.   } 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值