ToB企服应用市场:ToB评测及商务社交产业平台

标题: 《深入明白Mybatis原理》MyBatis事务管理机制 [打印本页]

作者: 道家人    时间: 2025-1-12 19:10
标题: 《深入明白Mybatis原理》MyBatis事务管理机制
概述

对数据库的事务而言,应该具有以下几点:创建(create)、提交(commit)、回滚(rollback)、关闭(close)。对应地,MyBatis将事务抽象成了Transaction接口:

MyBatis的事务管理分为两种形式:
这两者的类图如下所示:

官网关于事务配置的内容

在 MyBatis 中有两种类型的事务管理器(也就是 type="[JDBC|MANAGED]"):
  1. <transactionManager type="MANAGED">
  2.   <property name="closeConnection" value="false"/>
  3. </transactionManager>
复制代码
如果你正在使用 Spring + MyBatis,则没有须要配置事务管理器,因为 Spring 模块会使用自带的管理器来覆盖前面的配置。
这两种事务管理器类型都不需要设置任何属性。它们其实是类型别名,换句话说,你可以用 TransactionFactory 接口实现类的全限定名或类型别名代替它们。
  1. public interface TransactionFactory {<transactionManager type="MANAGED">
  2.   <property name="closeConnection" value="false"/>
  3. </transactionManager>default void setProperties(Properties props) { // 从 3.5.2 开始,该方法为默认方法<transactionManager type="MANAGED">
  4.   <property name="closeConnection" value="false"/>
  5. </transactionManager><transactionManager type="MANAGED">
  6.   <property name="closeConnection" value="false"/>
  7. </transactionManager>// 空实现<transactionManager type="MANAGED">
  8.   <property name="closeConnection" value="false"/>
  9. </transactionManager>}<transactionManager type="MANAGED">
  10.   <property name="closeConnection" value="false"/>
  11. </transactionManager>Transaction newTransaction(Connection conn);<transactionManager type="MANAGED">
  12.   <property name="closeConnection" value="false"/>
  13. </transactionManager>Transaction newTransaction(DataSource dataSource, TransactionIsolationLevel level, boolean autoCommit);}
复制代码
在事务管理器实例化后,所有在 XML 中配置的属性将会被传递给 setProperties() 方法。你的实现还需要创建一个 Transaction 接口的实现类,这个接口也很简朴:
  1. public interface Transaction {<transactionManager type="MANAGED">
  2.   <property name="closeConnection" value="false"/>
  3. </transactionManager>Connection getConnection() throws SQLException;<transactionManager type="MANAGED">
  4.   <property name="closeConnection" value="false"/>
  5. </transactionManager>void commit() throws SQLException;<transactionManager type="MANAGED">
  6.   <property name="closeConnection" value="false"/>
  7. </transactionManager>void rollback() throws SQLException;<transactionManager type="MANAGED">
  8.   <property name="closeConnection" value="false"/>
  9. </transactionManager>void close() throws SQLException;<transactionManager type="MANAGED">
  10.   <property name="closeConnection" value="false"/>
  11. </transactionManager>Integer getTimeout() throws SQLException;}
复制代码
使用这两个接口,你可以完全自定义 MyBatis 对事务的处理。
事务的配置、创建和使用

事务的配置

我们在使用MyBatis时,一般会在MyBatisXML配置文件中定义类似如下的信息:

节点定义了毗连某个数据库的信息,其子节点 的type 会决定我们用什么类型的事务管理机制。
事务工厂的创建

MyBatis事务的创建是交给TransactionFactory 事务工厂来创建的,如果我们将的type 配置为"JDBC",那么,在MyBatis初始化解析 节点时,会根据type="JDBC"创建一个JdbcTransactionFactory工厂,其源码如下:
  1. /**<transactionManager type="MANAGED">
  2.   <property name="closeConnection" value="false"/>
  3. </transactionManager>* 解析节点,创建对应的TransactionFactory<transactionManager type="MANAGED">
  4.   <property name="closeConnection" value="false"/>
  5. </transactionManager>* @param context<transactionManager type="MANAGED">
  6.   <property name="closeConnection" value="false"/>
  7. </transactionManager>* @return<transactionManager type="MANAGED">
  8.   <property name="closeConnection" value="false"/>
  9. </transactionManager>* @throws Exception<transactionManager type="MANAGED">
  10.   <property name="closeConnection" value="false"/>
  11. </transactionManager>*/<transactionManager type="MANAGED">
  12.   <property name="closeConnection" value="false"/>
  13. </transactionManager>private TransactionFactory transactionManagerElement(XNode context) throws Exception {<transactionManager type="MANAGED">
  14.   <property name="closeConnection" value="false"/>
  15. </transactionManager><transactionManager type="MANAGED">
  16.   <property name="closeConnection" value="false"/>
  17. </transactionManager><transactionManager type="MANAGED">
  18.   <property name="closeConnection" value="false"/>
  19. </transactionManager>if (context != null) {<transactionManager type="MANAGED">
  20.   <property name="closeConnection" value="false"/>
  21. </transactionManager><transactionManager type="MANAGED">
  22.   <property name="closeConnection" value="false"/>
  23. </transactionManager><transactionManager type="MANAGED">
  24.   <property name="closeConnection" value="false"/>
  25. </transactionManager><transactionManager type="MANAGED">
  26.   <property name="closeConnection" value="false"/>
  27. </transactionManager><transactionManager type="MANAGED">
  28.   <property name="closeConnection" value="false"/>
  29. </transactionManager>String type = context.getStringAttribute("type");<transactionManager type="MANAGED">
  30.   <property name="closeConnection" value="false"/>
  31. </transactionManager><transactionManager type="MANAGED">
  32.   <property name="closeConnection" value="false"/>
  33. </transactionManager><transactionManager type="MANAGED">
  34.   <property name="closeConnection" value="false"/>
  35. </transactionManager><transactionManager type="MANAGED">
  36.   <property name="closeConnection" value="false"/>
  37. </transactionManager><transactionManager type="MANAGED">
  38.   <property name="closeConnection" value="false"/>
  39. </transactionManager>Properties props = context.getChildrenAsProperties();<transactionManager type="MANAGED">
  40.   <property name="closeConnection" value="false"/>
  41. </transactionManager><transactionManager type="MANAGED">
  42.   <property name="closeConnection" value="false"/>
  43. </transactionManager><transactionManager type="MANAGED">
  44.   <property name="closeConnection" value="false"/>
  45. </transactionManager><transactionManager type="MANAGED">
  46.   <property name="closeConnection" value="false"/>
  47. </transactionManager><transactionManager type="MANAGED">
  48.   <property name="closeConnection" value="false"/>
  49. </transactionManager>/*<transactionManager type="MANAGED">
  50.   <property name="closeConnection" value="false"/>
  51. </transactionManager><transactionManager type="MANAGED">
  52.   <property name="closeConnection" value="false"/>
  53. </transactionManager><transactionManager type="MANAGED">
  54.   <property name="closeConnection" value="false"/>
  55. </transactionManager><transactionManager type="MANAGED">
  56.   <property name="closeConnection" value="false"/>
  57. </transactionManager><transactionManager type="MANAGED">
  58.   <property name="closeConnection" value="false"/>
  59. </transactionManager>* 在Configuration初始化的时候,会通过以下语句,给JDBC和MANAGED对应的工厂类<transactionManager type="MANAGED">
  60.   <property name="closeConnection" value="false"/>
  61. </transactionManager><transactionManager type="MANAGED">
  62.   <property name="closeConnection" value="false"/>
  63. </transactionManager><transactionManager type="MANAGED">
  64.   <property name="closeConnection" value="false"/>
  65. </transactionManager><transactionManager type="MANAGED">
  66.   <property name="closeConnection" value="false"/>
  67. </transactionManager><transactionManager type="MANAGED">
  68.   <property name="closeConnection" value="false"/>
  69. </transactionManager>* typeAliasRegistry.registerAlias("JDBC", JdbcTransactionFactory.class);<transactionManager type="MANAGED">
  70.   <property name="closeConnection" value="false"/>
  71. </transactionManager><transactionManager type="MANAGED">
  72.   <property name="closeConnection" value="false"/>
  73. </transactionManager><transactionManager type="MANAGED">
  74.   <property name="closeConnection" value="false"/>
  75. </transactionManager><transactionManager type="MANAGED">
  76.   <property name="closeConnection" value="false"/>
  77. </transactionManager><transactionManager type="MANAGED">
  78.   <property name="closeConnection" value="false"/>
  79. </transactionManager>* typeAliasRegistry.registerAlias("MANAGED", ManagedTransactionFactory.class);<transactionManager type="MANAGED">
  80.   <property name="closeConnection" value="false"/>
  81. </transactionManager><transactionManager type="MANAGED">
  82.   <property name="closeConnection" value="false"/>
  83. </transactionManager><transactionManager type="MANAGED">
  84.   <property name="closeConnection" value="false"/>
  85. </transactionManager><transactionManager type="MANAGED">
  86.   <property name="closeConnection" value="false"/>
  87. </transactionManager><transactionManager type="MANAGED">
  88.   <property name="closeConnection" value="false"/>
  89. </transactionManager>* 下述的resolveClass(type).newInstance()会创建对应的工厂实例<transactionManager type="MANAGED">
  90.   <property name="closeConnection" value="false"/>
  91. </transactionManager><transactionManager type="MANAGED">
  92.   <property name="closeConnection" value="false"/>
  93. </transactionManager><transactionManager type="MANAGED">
  94.   <property name="closeConnection" value="false"/>
  95. </transactionManager><transactionManager type="MANAGED">
  96.   <property name="closeConnection" value="false"/>
  97. </transactionManager><transactionManager type="MANAGED">
  98.   <property name="closeConnection" value="false"/>
  99. </transactionManager>*/<transactionManager type="MANAGED">
  100.   <property name="closeConnection" value="false"/>
  101. </transactionManager><transactionManager type="MANAGED">
  102.   <property name="closeConnection" value="false"/>
  103. </transactionManager><transactionManager type="MANAGED">
  104.   <property name="closeConnection" value="false"/>
  105. </transactionManager><transactionManager type="MANAGED">
  106.   <property name="closeConnection" value="false"/>
  107. </transactionManager><transactionManager type="MANAGED">
  108.   <property name="closeConnection" value="false"/>
  109. </transactionManager>TransactionFactory factory = (TransactionFactory) resolveClass(type).newInstance();<transactionManager type="MANAGED">
  110.   <property name="closeConnection" value="false"/>
  111. </transactionManager><transactionManager type="MANAGED">
  112.   <property name="closeConnection" value="false"/>
  113. </transactionManager><transactionManager type="MANAGED">
  114.   <property name="closeConnection" value="false"/>
  115. </transactionManager><transactionManager type="MANAGED">
  116.   <property name="closeConnection" value="false"/>
  117. </transactionManager><transactionManager type="MANAGED">
  118.   <property name="closeConnection" value="false"/>
  119. </transactionManager>factory.setProperties(props);<transactionManager type="MANAGED">
  120.   <property name="closeConnection" value="false"/>
  121. </transactionManager><transactionManager type="MANAGED">
  122.   <property name="closeConnection" value="false"/>
  123. </transactionManager><transactionManager type="MANAGED">
  124.   <property name="closeConnection" value="false"/>
  125. </transactionManager><transactionManager type="MANAGED">
  126.   <property name="closeConnection" value="false"/>
  127. </transactionManager><transactionManager type="MANAGED">
  128.   <property name="closeConnection" value="false"/>
  129. </transactionManager>return factory;<transactionManager type="MANAGED">
  130.   <property name="closeConnection" value="false"/>
  131. </transactionManager><transactionManager type="MANAGED">
  132.   <property name="closeConnection" value="false"/>
  133. </transactionManager><transactionManager type="MANAGED">
  134.   <property name="closeConnection" value="false"/>
  135. </transactionManager>}<transactionManager type="MANAGED">
  136.   <property name="closeConnection" value="false"/>
  137. </transactionManager><transactionManager type="MANAGED">
  138.   <property name="closeConnection" value="false"/>
  139. </transactionManager><transactionManager type="MANAGED">
  140.   <property name="closeConnection" value="false"/>
  141. </transactionManager>throw new BuilderException("Environment declaration requires a TransactionFactory.");<transactionManager type="MANAGED">
  142.   <property name="closeConnection" value="false"/>
  143. </transactionManager>}<transactionManager type="MANAGED">
  144.   <property name="closeConnection" value="false"/>
  145. </transactionManager>
复制代码
如上述代码所示,如果type = "JDBC",则MyBatis会创建一个JdbcTransactionFactory.class 实例;如果type="MANAGED",则MyBatis会创建一个MangedTransactionFactory.class实例。
MyBatis对节点的解析会生成TransactionFactory实例;而对解析会生成datasouce实例,作为节点,会根据TransactionFactory和DataSource实例创建一个Environment对象,代码如下所示:
  1. private void environmentsElement(XNode context) throws Exception {<transactionManager type="MANAGED">
  2.   <property name="closeConnection" value="false"/>
  3. </transactionManager><transactionManager type="MANAGED">
  4.   <property name="closeConnection" value="false"/>
  5. </transactionManager><transactionManager type="MANAGED">
  6.   <property name="closeConnection" value="false"/>
  7. </transactionManager>if (context != null) {<transactionManager type="MANAGED">
  8.   <property name="closeConnection" value="false"/>
  9. </transactionManager><transactionManager type="MANAGED">
  10.   <property name="closeConnection" value="false"/>
  11. </transactionManager><transactionManager type="MANAGED">
  12.   <property name="closeConnection" value="false"/>
  13. </transactionManager><transactionManager type="MANAGED">
  14.   <property name="closeConnection" value="false"/>
  15. </transactionManager><transactionManager type="MANAGED">
  16.   <property name="closeConnection" value="false"/>
  17. </transactionManager>if (environment == null) {<transactionManager type="MANAGED">
  18.   <property name="closeConnection" value="false"/>
  19. </transactionManager><transactionManager type="MANAGED">
  20.   <property name="closeConnection" value="false"/>
  21. </transactionManager><transactionManager type="MANAGED">
  22.   <property name="closeConnection" value="false"/>
  23. </transactionManager><transactionManager type="MANAGED">
  24.   <property name="closeConnection" value="false"/>
  25. </transactionManager><transactionManager type="MANAGED">
  26.   <property name="closeConnection" value="false"/>
  27. </transactionManager><transactionManager type="MANAGED">
  28.   <property name="closeConnection" value="false"/>
  29. </transactionManager><transactionManager type="MANAGED">
  30.   <property name="closeConnection" value="false"/>
  31. </transactionManager>environment = context.getStringAttribute("default");<transactionManager type="MANAGED">
  32.   <property name="closeConnection" value="false"/>
  33. </transactionManager><transactionManager type="MANAGED">
  34.   <property name="closeConnection" value="false"/>
  35. </transactionManager><transactionManager type="MANAGED">
  36.   <property name="closeConnection" value="false"/>
  37. </transactionManager><transactionManager type="MANAGED">
  38.   <property name="closeConnection" value="false"/>
  39. </transactionManager><transactionManager type="MANAGED">
  40.   <property name="closeConnection" value="false"/>
  41. </transactionManager>}<transactionManager type="MANAGED">
  42.   <property name="closeConnection" value="false"/>
  43. </transactionManager><transactionManager type="MANAGED">
  44.   <property name="closeConnection" value="false"/>
  45. </transactionManager><transactionManager type="MANAGED">
  46.   <property name="closeConnection" value="false"/>
  47. </transactionManager><transactionManager type="MANAGED">
  48.   <property name="closeConnection" value="false"/>
  49. </transactionManager><transactionManager type="MANAGED">
  50.   <property name="closeConnection" value="false"/>
  51. </transactionManager>for (XNode child : context.getChildren()) {<transactionManager type="MANAGED">
  52.   <property name="closeConnection" value="false"/>
  53. </transactionManager><transactionManager type="MANAGED">
  54.   <property name="closeConnection" value="false"/>
  55. </transactionManager><transactionManager type="MANAGED">
  56.   <property name="closeConnection" value="false"/>
  57. </transactionManager><transactionManager type="MANAGED">
  58.   <property name="closeConnection" value="false"/>
  59. </transactionManager><transactionManager type="MANAGED">
  60.   <property name="closeConnection" value="false"/>
  61. </transactionManager><transactionManager type="MANAGED">
  62.   <property name="closeConnection" value="false"/>
  63. </transactionManager><transactionManager type="MANAGED">
  64.   <property name="closeConnection" value="false"/>
  65. </transactionManager>String id = child.getStringAttribute("id");<transactionManager type="MANAGED">
  66.   <property name="closeConnection" value="false"/>
  67. </transactionManager><transactionManager type="MANAGED">
  68.   <property name="closeConnection" value="false"/>
  69. </transactionManager><transactionManager type="MANAGED">
  70.   <property name="closeConnection" value="false"/>
  71. </transactionManager><transactionManager type="MANAGED">
  72.   <property name="closeConnection" value="false"/>
  73. </transactionManager><transactionManager type="MANAGED">
  74.   <property name="closeConnection" value="false"/>
  75. </transactionManager><transactionManager type="MANAGED">
  76.   <property name="closeConnection" value="false"/>
  77. </transactionManager><transactionManager type="MANAGED">
  78.   <property name="closeConnection" value="false"/>
  79. </transactionManager>//是和默认的环境相同时,解析之<transactionManager type="MANAGED">
  80.   <property name="closeConnection" value="false"/>
  81. </transactionManager><transactionManager type="MANAGED">
  82.   <property name="closeConnection" value="false"/>
  83. </transactionManager><transactionManager type="MANAGED">
  84.   <property name="closeConnection" value="false"/>
  85. </transactionManager><transactionManager type="MANAGED">
  86.   <property name="closeConnection" value="false"/>
  87. </transactionManager><transactionManager type="MANAGED">
  88.   <property name="closeConnection" value="false"/>
  89. </transactionManager><transactionManager type="MANAGED">
  90.   <property name="closeConnection" value="false"/>
  91. </transactionManager><transactionManager type="MANAGED">
  92.   <property name="closeConnection" value="false"/>
  93. </transactionManager>if (isSpecifiedEnvironment(id)) {<transactionManager type="MANAGED">
  94.   <property name="closeConnection" value="false"/>
  95. </transactionManager><transactionManager type="MANAGED">
  96.   <property name="closeConnection" value="false"/>
  97. </transactionManager><transactionManager type="MANAGED">
  98.   <property name="closeConnection" value="false"/>
  99. </transactionManager><transactionManager type="MANAGED">
  100.   <property name="closeConnection" value="false"/>
  101. </transactionManager><transactionManager type="MANAGED">
  102.   <property name="closeConnection" value="false"/>
  103. </transactionManager><transactionManager type="MANAGED">
  104.   <property name="closeConnection" value="false"/>
  105. </transactionManager><transactionManager type="MANAGED">
  106.   <property name="closeConnection" value="false"/>
  107. </transactionManager><transactionManager type="MANAGED">
  108.   <property name="closeConnection" value="false"/>
  109. </transactionManager><transactionManager type="MANAGED">
  110.   <property name="closeConnection" value="false"/>
  111. </transactionManager>//1.解析节点,决定创建什么类型的TransactionFactory<transactionManager type="MANAGED">
  112.   <property name="closeConnection" value="false"/>
  113. </transactionManager><transactionManager type="MANAGED">
  114.   <property name="closeConnection" value="false"/>
  115. </transactionManager><transactionManager type="MANAGED">
  116.   <property name="closeConnection" value="false"/>
  117. </transactionManager><transactionManager type="MANAGED">
  118.   <property name="closeConnection" value="false"/>
  119. </transactionManager><transactionManager type="MANAGED">
  120.   <property name="closeConnection" value="false"/>
  121. </transactionManager><transactionManager type="MANAGED">
  122.   <property name="closeConnection" value="false"/>
  123. </transactionManager><transactionManager type="MANAGED">
  124.   <property name="closeConnection" value="false"/>
  125. </transactionManager><transactionManager type="MANAGED">
  126.   <property name="closeConnection" value="false"/>
  127. </transactionManager><transactionManager type="MANAGED">
  128.   <property name="closeConnection" value="false"/>
  129. </transactionManager>TransactionFactory txFactory = transactionManagerElement(child.evalNode("transactionManager"));<transactionManager type="MANAGED">
  130.   <property name="closeConnection" value="false"/>
  131. </transactionManager><transactionManager type="MANAGED">
  132.   <property name="closeConnection" value="false"/>
  133. </transactionManager><transactionManager type="MANAGED">
  134.   <property name="closeConnection" value="false"/>
  135. </transactionManager><transactionManager type="MANAGED">
  136.   <property name="closeConnection" value="false"/>
  137. </transactionManager><transactionManager type="MANAGED">
  138.   <property name="closeConnection" value="false"/>
  139. </transactionManager><transactionManager type="MANAGED">
  140.   <property name="closeConnection" value="false"/>
  141. </transactionManager><transactionManager type="MANAGED">
  142.   <property name="closeConnection" value="false"/>
  143. </transactionManager><transactionManager type="MANAGED">
  144.   <property name="closeConnection" value="false"/>
  145. </transactionManager><transactionManager type="MANAGED">
  146.   <property name="closeConnection" value="false"/>
  147. </transactionManager>//2. 创建dataSource<transactionManager type="MANAGED">
  148.   <property name="closeConnection" value="false"/>
  149. </transactionManager><transactionManager type="MANAGED">
  150.   <property name="closeConnection" value="false"/>
  151. </transactionManager><transactionManager type="MANAGED">
  152.   <property name="closeConnection" value="false"/>
  153. </transactionManager><transactionManager type="MANAGED">
  154.   <property name="closeConnection" value="false"/>
  155. </transactionManager><transactionManager type="MANAGED">
  156.   <property name="closeConnection" value="false"/>
  157. </transactionManager><transactionManager type="MANAGED">
  158.   <property name="closeConnection" value="false"/>
  159. </transactionManager><transactionManager type="MANAGED">
  160.   <property name="closeConnection" value="false"/>
  161. </transactionManager><transactionManager type="MANAGED">
  162.   <property name="closeConnection" value="false"/>
  163. </transactionManager><transactionManager type="MANAGED">
  164.   <property name="closeConnection" value="false"/>
  165. </transactionManager>DataSourceFactory dsFactory = dataSourceElement(child.evalNode("dataSource"));<transactionManager type="MANAGED">
  166.   <property name="closeConnection" value="false"/>
  167. </transactionManager><transactionManager type="MANAGED">
  168.   <property name="closeConnection" value="false"/>
  169. </transactionManager><transactionManager type="MANAGED">
  170.   <property name="closeConnection" value="false"/>
  171. </transactionManager><transactionManager type="MANAGED">
  172.   <property name="closeConnection" value="false"/>
  173. </transactionManager><transactionManager type="MANAGED">
  174.   <property name="closeConnection" value="false"/>
  175. </transactionManager><transactionManager type="MANAGED">
  176.   <property name="closeConnection" value="false"/>
  177. </transactionManager><transactionManager type="MANAGED">
  178.   <property name="closeConnection" value="false"/>
  179. </transactionManager><transactionManager type="MANAGED">
  180.   <property name="closeConnection" value="false"/>
  181. </transactionManager><transactionManager type="MANAGED">
  182.   <property name="closeConnection" value="false"/>
  183. </transactionManager>DataSource dataSource = dsFactory.getDataSource();<transactionManager type="MANAGED">
  184.   <property name="closeConnection" value="false"/>
  185. </transactionManager><transactionManager type="MANAGED">
  186.   <property name="closeConnection" value="false"/>
  187. </transactionManager><transactionManager type="MANAGED">
  188.   <property name="closeConnection" value="false"/>
  189. </transactionManager><transactionManager type="MANAGED">
  190.   <property name="closeConnection" value="false"/>
  191. </transactionManager><transactionManager type="MANAGED">
  192.   <property name="closeConnection" value="false"/>
  193. </transactionManager><transactionManager type="MANAGED">
  194.   <property name="closeConnection" value="false"/>
  195. </transactionManager><transactionManager type="MANAGED">
  196.   <property name="closeConnection" value="false"/>
  197. </transactionManager><transactionManager type="MANAGED">
  198.   <property name="closeConnection" value="false"/>
  199. </transactionManager><transactionManager type="MANAGED">
  200.   <property name="closeConnection" value="false"/>
  201. </transactionManager>//3. 使用了Environment内置的构造器Builder,传递id 事务工厂TransactionFactory和数据源DataSource<transactionManager type="MANAGED">
  202.   <property name="closeConnection" value="false"/>
  203. </transactionManager><transactionManager type="MANAGED">
  204.   <property name="closeConnection" value="false"/>
  205. </transactionManager><transactionManager type="MANAGED">
  206.   <property name="closeConnection" value="false"/>
  207. </transactionManager><transactionManager type="MANAGED">
  208.   <property name="closeConnection" value="false"/>
  209. </transactionManager><transactionManager type="MANAGED">
  210.   <property name="closeConnection" value="false"/>
  211. </transactionManager><transactionManager type="MANAGED">
  212.   <property name="closeConnection" value="false"/>
  213. </transactionManager><transactionManager type="MANAGED">
  214.   <property name="closeConnection" value="false"/>
  215. </transactionManager><transactionManager type="MANAGED">
  216.   <property name="closeConnection" value="false"/>
  217. </transactionManager><transactionManager type="MANAGED">
  218.   <property name="closeConnection" value="false"/>
  219. </transactionManager>Environment.Builder environmentBuilder = new Environment.Builder(id)<transactionManager type="MANAGED">
  220.   <property name="closeConnection" value="false"/>
  221. </transactionManager><transactionManager type="MANAGED">
  222.   <property name="closeConnection" value="false"/>
  223. </transactionManager><transactionManager type="MANAGED">
  224.   <property name="closeConnection" value="false"/>
  225. </transactionManager><transactionManager type="MANAGED">
  226.   <property name="closeConnection" value="false"/>
  227. </transactionManager><transactionManager type="MANAGED">
  228.   <property name="closeConnection" value="false"/>
  229. </transactionManager><transactionManager type="MANAGED">
  230.   <property name="closeConnection" value="false"/>
  231. </transactionManager><transactionManager type="MANAGED">
  232.   <property name="closeConnection" value="false"/>
  233. </transactionManager><transactionManager type="MANAGED">
  234.   <property name="closeConnection" value="false"/>
  235. </transactionManager><transactionManager type="MANAGED">
  236.   <property name="closeConnection" value="false"/>
  237. </transactionManager>.transactionFactory(txFactory)<transactionManager type="MANAGED">
  238.   <property name="closeConnection" value="false"/>
  239. </transactionManager><transactionManager type="MANAGED">
  240.   <property name="closeConnection" value="false"/>
  241. </transactionManager><transactionManager type="MANAGED">
  242.   <property name="closeConnection" value="false"/>
  243. </transactionManager><transactionManager type="MANAGED">
  244.   <property name="closeConnection" value="false"/>
  245. </transactionManager><transactionManager type="MANAGED">
  246.   <property name="closeConnection" value="false"/>
  247. </transactionManager><transactionManager type="MANAGED">
  248.   <property name="closeConnection" value="false"/>
  249. </transactionManager><transactionManager type="MANAGED">
  250.   <property name="closeConnection" value="false"/>
  251. </transactionManager><transactionManager type="MANAGED">
  252.   <property name="closeConnection" value="false"/>
  253. </transactionManager><transactionManager type="MANAGED">
  254.   <property name="closeConnection" value="false"/>
  255. </transactionManager>.dataSource(dataSource);<transactionManager type="MANAGED">
  256.   <property name="closeConnection" value="false"/>
  257. </transactionManager><transactionManager type="MANAGED">
  258.   <property name="closeConnection" value="false"/>
  259. </transactionManager><transactionManager type="MANAGED">
  260.   <property name="closeConnection" value="false"/>
  261. </transactionManager><transactionManager type="MANAGED">
  262.   <property name="closeConnection" value="false"/>
  263. </transactionManager><transactionManager type="MANAGED">
  264.   <property name="closeConnection" value="false"/>
  265. </transactionManager><transactionManager type="MANAGED">
  266.   <property name="closeConnection" value="false"/>
  267. </transactionManager><transactionManager type="MANAGED">
  268.   <property name="closeConnection" value="false"/>
  269. </transactionManager><transactionManager type="MANAGED">
  270.   <property name="closeConnection" value="false"/>
  271. </transactionManager><transactionManager type="MANAGED">
  272.   <property name="closeConnection" value="false"/>
  273. </transactionManager>configuration.setEnvironment(environmentBuilder.build());<transactionManager type="MANAGED">
  274.   <property name="closeConnection" value="false"/>
  275. </transactionManager><transactionManager type="MANAGED">
  276.   <property name="closeConnection" value="false"/>
  277. </transactionManager><transactionManager type="MANAGED">
  278.   <property name="closeConnection" value="false"/>
  279. </transactionManager><transactionManager type="MANAGED">
  280.   <property name="closeConnection" value="false"/>
  281. </transactionManager><transactionManager type="MANAGED">
  282.   <property name="closeConnection" value="false"/>
  283. </transactionManager><transactionManager type="MANAGED">
  284.   <property name="closeConnection" value="false"/>
  285. </transactionManager><transactionManager type="MANAGED">
  286.   <property name="closeConnection" value="false"/>
  287. </transactionManager>}<transactionManager type="MANAGED">
  288.   <property name="closeConnection" value="false"/>
  289. </transactionManager><transactionManager type="MANAGED">
  290.   <property name="closeConnection" value="false"/>
  291. </transactionManager><transactionManager type="MANAGED">
  292.   <property name="closeConnection" value="false"/>
  293. </transactionManager><transactionManager type="MANAGED">
  294.   <property name="closeConnection" value="false"/>
  295. </transactionManager><transactionManager type="MANAGED">
  296.   <property name="closeConnection" value="false"/>
  297. </transactionManager>}<transactionManager type="MANAGED">
  298.   <property name="closeConnection" value="false"/>
  299. </transactionManager><transactionManager type="MANAGED">
  300.   <property name="closeConnection" value="false"/>
  301. </transactionManager><transactionManager type="MANAGED">
  302.   <property name="closeConnection" value="false"/>
  303. </transactionManager>}<transactionManager type="MANAGED">
  304.   <property name="closeConnection" value="false"/>
  305. </transactionManager>}<transactionManager type="MANAGED">
  306.   <property name="closeConnection" value="false"/>
  307. </transactionManager>
复制代码
Environment表示着一个数据库的毗连,生成后的Environment对象会被设置到Configuration实例中,以供后续的使用。

上述一直在讲事务工厂TransactionFactory来创建的Transaction,现在让我们看一下MyBatis中的TransactionFactory的定义吧。
事务工厂TransactionFactory

事务工厂Transaction定义了创建Transaction的两个方法:一个是通过指定的Connection对象创建Transaction,另外是通过数据源DataSource来创建Transaction。与JDBC 和MANAGED两种Transaction相对应,TransactionFactory有两个对应的实现的子类:

事务Transaction的创建

通过事务工厂TransactionFactory很容易获取到Transaction对象实例。我们以JdbcTransaction为例,看一下JdbcTransactionFactory是怎样生成JdbcTransaction的,代码如下:
  1. public class JdbcTransactionFactory implements TransactionFactory {<transactionManager type="MANAGED">
  2.   <property name="closeConnection" value="false"/>
  3. </transactionManager><transactionManager type="MANAGED">
  4.   <property name="closeConnection" value="false"/>
  5. </transactionManager><transactionManager type="MANAGED">
  6.   <property name="closeConnection" value="false"/>
  7. </transactionManager> public void setProperties(Properties props) {<transactionManager type="MANAGED">
  8.   <property name="closeConnection" value="false"/>
  9. </transactionManager><transactionManager type="MANAGED">
  10.   <property name="closeConnection" value="false"/>
  11. </transactionManager><transactionManager type="MANAGED">
  12.   <property name="closeConnection" value="false"/>
  13. </transactionManager>}<transactionManager type="MANAGED">
  14.   <property name="closeConnection" value="false"/>
  15. </transactionManager><transactionManager type="MANAGED">
  16.   <property name="closeConnection" value="false"/>
  17. </transactionManager><transactionManager type="MANAGED">
  18.   <property name="closeConnection" value="false"/>
  19. </transactionManager> /**<transactionManager type="MANAGED">
  20.   <property name="closeConnection" value="false"/>
  21. </transactionManager><transactionManager type="MANAGED">
  22.   <property name="closeConnection" value="false"/>
  23. </transactionManager><transactionManager type="MANAGED">
  24.   <property name="closeConnection" value="false"/>
  25. </transactionManager>* 根据给定的数据库毗连Connection创建Transaction<transactionManager type="MANAGED">
  26.   <property name="closeConnection" value="false"/>
  27. </transactionManager><transactionManager type="MANAGED">
  28.   <property name="closeConnection" value="false"/>
  29. </transactionManager><transactionManager type="MANAGED">
  30.   <property name="closeConnection" value="false"/>
  31. </transactionManager>* @param conn Existing database connection<transactionManager type="MANAGED">
  32.   <property name="closeConnection" value="false"/>
  33. </transactionManager><transactionManager type="MANAGED">
  34.   <property name="closeConnection" value="false"/>
  35. </transactionManager><transactionManager type="MANAGED">
  36.   <property name="closeConnection" value="false"/>
  37. </transactionManager>* @return<transactionManager type="MANAGED">
  38.   <property name="closeConnection" value="false"/>
  39. </transactionManager><transactionManager type="MANAGED">
  40.   <property name="closeConnection" value="false"/>
  41. </transactionManager><transactionManager type="MANAGED">
  42.   <property name="closeConnection" value="false"/>
  43. </transactionManager>*/<transactionManager type="MANAGED">
  44.   <property name="closeConnection" value="false"/>
  45. </transactionManager><transactionManager type="MANAGED">
  46.   <property name="closeConnection" value="false"/>
  47. </transactionManager><transactionManager type="MANAGED">
  48.   <property name="closeConnection" value="false"/>
  49. </transactionManager>public Transaction newTransaction(Connection conn) {<transactionManager type="MANAGED">
  50.   <property name="closeConnection" value="false"/>
  51. </transactionManager><transactionManager type="MANAGED">
  52.   <property name="closeConnection" value="false"/>
  53. </transactionManager><transactionManager type="MANAGED">
  54.   <property name="closeConnection" value="false"/>
  55. </transactionManager><transactionManager type="MANAGED">
  56.   <property name="closeConnection" value="false"/>
  57. </transactionManager><transactionManager type="MANAGED">
  58.   <property name="closeConnection" value="false"/>
  59. </transactionManager>return new JdbcTransaction(conn);<transactionManager type="MANAGED">
  60.   <property name="closeConnection" value="false"/>
  61. </transactionManager><transactionManager type="MANAGED">
  62.   <property name="closeConnection" value="false"/>
  63. </transactionManager><transactionManager type="MANAGED">
  64.   <property name="closeConnection" value="false"/>
  65. </transactionManager>}<transactionManager type="MANAGED">
  66.   <property name="closeConnection" value="false"/>
  67. </transactionManager><transactionManager type="MANAGED">
  68.   <property name="closeConnection" value="false"/>
  69. </transactionManager><transactionManager type="MANAGED">
  70.   <property name="closeConnection" value="false"/>
  71. </transactionManager> /**<transactionManager type="MANAGED">
  72.   <property name="closeConnection" value="false"/>
  73. </transactionManager><transactionManager type="MANAGED">
  74.   <property name="closeConnection" value="false"/>
  75. </transactionManager><transactionManager type="MANAGED">
  76.   <property name="closeConnection" value="false"/>
  77. </transactionManager>* 根据DataSource、隔离级别和是否主动提交创建Transacion<transactionManager type="MANAGED">
  78.   <property name="closeConnection" value="false"/>
  79. </transactionManager><transactionManager type="MANAGED">
  80.   <property name="closeConnection" value="false"/>
  81. </transactionManager><transactionManager type="MANAGED">
  82.   <property name="closeConnection" value="false"/>
  83. </transactionManager>*<transactionManager type="MANAGED">
  84.   <property name="closeConnection" value="false"/>
  85. </transactionManager><transactionManager type="MANAGED">
  86.   <property name="closeConnection" value="false"/>
  87. </transactionManager><transactionManager type="MANAGED">
  88.   <property name="closeConnection" value="false"/>
  89. </transactionManager>* @param ds<transactionManager type="MANAGED">
  90.   <property name="closeConnection" value="false"/>
  91. </transactionManager><transactionManager type="MANAGED">
  92.   <property name="closeConnection" value="false"/>
  93. </transactionManager><transactionManager type="MANAGED">
  94.   <property name="closeConnection" value="false"/>
  95. </transactionManager>* @param level Desired isolation level<transactionManager type="MANAGED">
  96.   <property name="closeConnection" value="false"/>
  97. </transactionManager><transactionManager type="MANAGED">
  98.   <property name="closeConnection" value="false"/>
  99. </transactionManager><transactionManager type="MANAGED">
  100.   <property name="closeConnection" value="false"/>
  101. </transactionManager>* @param autoCommit Desired autocommit<transactionManager type="MANAGED">
  102.   <property name="closeConnection" value="false"/>
  103. </transactionManager><transactionManager type="MANAGED">
  104.   <property name="closeConnection" value="false"/>
  105. </transactionManager><transactionManager type="MANAGED">
  106.   <property name="closeConnection" value="false"/>
  107. </transactionManager>* @return<transactionManager type="MANAGED">
  108.   <property name="closeConnection" value="false"/>
  109. </transactionManager><transactionManager type="MANAGED">
  110.   <property name="closeConnection" value="false"/>
  111. </transactionManager><transactionManager type="MANAGED">
  112.   <property name="closeConnection" value="false"/>
  113. </transactionManager>*/<transactionManager type="MANAGED">
  114.   <property name="closeConnection" value="false"/>
  115. </transactionManager><transactionManager type="MANAGED">
  116.   <property name="closeConnection" value="false"/>
  117. </transactionManager><transactionManager type="MANAGED">
  118.   <property name="closeConnection" value="false"/>
  119. </transactionManager>public Transaction newTransaction(DataSource ds, TransactionIsolationLevel level, boolean autoCommit) {<transactionManager type="MANAGED">
  120.   <property name="closeConnection" value="false"/>
  121. </transactionManager><transactionManager type="MANAGED">
  122.   <property name="closeConnection" value="false"/>
  123. </transactionManager><transactionManager type="MANAGED">
  124.   <property name="closeConnection" value="false"/>
  125. </transactionManager><transactionManager type="MANAGED">
  126.   <property name="closeConnection" value="false"/>
  127. </transactionManager><transactionManager type="MANAGED">
  128.   <property name="closeConnection" value="false"/>
  129. </transactionManager>return new JdbcTransaction(ds, level, autoCommit);<transactionManager type="MANAGED">
  130.   <property name="closeConnection" value="false"/>
  131. </transactionManager><transactionManager type="MANAGED">
  132.   <property name="closeConnection" value="false"/>
  133. </transactionManager><transactionManager type="MANAGED">
  134.   <property name="closeConnection" value="false"/>
  135. </transactionManager>}<transactionManager type="MANAGED">
  136.   <property name="closeConnection" value="false"/>
  137. </transactionManager>}<transactionManager type="MANAGED">
  138.   <property name="closeConnection" value="false"/>
  139. </transactionManager>
复制代码
如上说是,JdbcTransactionFactory会创建JDBC类型的Transaction,即JdbcTransaction。类似地,ManagedTransactionFactory也会创建ManagedTransaction。下面我们会分别深入JdbcTranaction 和ManagedTransaction,看它们到底是怎样实现事务管理的。
JdbcTransaction

JdbcTransaction直接使用JDBC的提交和回滚事务管理机制。它依靠与从dataSource中取得的毗连connection 来管理transaction 的作用域,connection对象的获取被延迟到调用getConnection()方法。如果autocommit设置为on,开启状态的话,它会忽略commit和rollback。
直观地讲,就是JdbcTransaction是使用的java.sql.Connection 上的commit和rollback功能,JdbcTransaction只是相当于对java.sql.Connection事务处理进行了一次包装(wrapper),Transaction的事务管理都是通过java.sql.Connection实现的。JdbcTransaction的代码实现如下:
  1. public class JdbcTransaction implements Transaction {<transactionManager type="MANAGED">
  2.   <property name="closeConnection" value="false"/>
  3. </transactionManager><transactionManager type="MANAGED">
  4.   <property name="closeConnection" value="false"/>
  5. </transactionManager><transactionManager type="MANAGED">
  6.   <property name="closeConnection" value="false"/>
  7. </transactionManager> private static final Log log = LogFactory.getLog(JdbcTransaction.class);<transactionManager type="MANAGED">
  8.   <property name="closeConnection" value="false"/>
  9. </transactionManager><transactionManager type="MANAGED">
  10.   <property name="closeConnection" value="false"/>
  11. </transactionManager><transactionManager type="MANAGED">
  12.   <property name="closeConnection" value="false"/>
  13. </transactionManager> //数据库毗连<transactionManager type="MANAGED">
  14.   <property name="closeConnection" value="false"/>
  15. </transactionManager><transactionManager type="MANAGED">
  16.   <property name="closeConnection" value="false"/>
  17. </transactionManager><transactionManager type="MANAGED">
  18.   <property name="closeConnection" value="false"/>
  19. </transactionManager>protected Connection connection;<transactionManager type="MANAGED">
  20.   <property name="closeConnection" value="false"/>
  21. </transactionManager><transactionManager type="MANAGED">
  22.   <property name="closeConnection" value="false"/>
  23. </transactionManager><transactionManager type="MANAGED">
  24.   <property name="closeConnection" value="false"/>
  25. </transactionManager>//数据源<transactionManager type="MANAGED">
  26.   <property name="closeConnection" value="false"/>
  27. </transactionManager><transactionManager type="MANAGED">
  28.   <property name="closeConnection" value="false"/>
  29. </transactionManager><transactionManager type="MANAGED">
  30.   <property name="closeConnection" value="false"/>
  31. </transactionManager>protected DataSource dataSource;<transactionManager type="MANAGED">
  32.   <property name="closeConnection" value="false"/>
  33. </transactionManager><transactionManager type="MANAGED">
  34.   <property name="closeConnection" value="false"/>
  35. </transactionManager><transactionManager type="MANAGED">
  36.   <property name="closeConnection" value="false"/>
  37. </transactionManager>//隔离级别<transactionManager type="MANAGED">
  38.   <property name="closeConnection" value="false"/>
  39. </transactionManager><transactionManager type="MANAGED">
  40.   <property name="closeConnection" value="false"/>
  41. </transactionManager><transactionManager type="MANAGED">
  42.   <property name="closeConnection" value="false"/>
  43. </transactionManager>protected TransactionIsolationLevel level;<transactionManager type="MANAGED">
  44.   <property name="closeConnection" value="false"/>
  45. </transactionManager><transactionManager type="MANAGED">
  46.   <property name="closeConnection" value="false"/>
  47. </transactionManager><transactionManager type="MANAGED">
  48.   <property name="closeConnection" value="false"/>
  49. </transactionManager>//是否为主动提交<transactionManager type="MANAGED">
  50.   <property name="closeConnection" value="false"/>
  51. </transactionManager><transactionManager type="MANAGED">
  52.   <property name="closeConnection" value="false"/>
  53. </transactionManager><transactionManager type="MANAGED">
  54.   <property name="closeConnection" value="false"/>
  55. </transactionManager>protected boolean autoCommmit;<transactionManager type="MANAGED">
  56.   <property name="closeConnection" value="false"/>
  57. </transactionManager><transactionManager type="MANAGED">
  58.   <property name="closeConnection" value="false"/>
  59. </transactionManager><transactionManager type="MANAGED">
  60.   <property name="closeConnection" value="false"/>
  61. </transactionManager> public JdbcTransaction(DataSource ds, TransactionIsolationLevel desiredLevel, boolean desiredAutoCommit) {<transactionManager type="MANAGED">
  62.   <property name="closeConnection" value="false"/>
  63. </transactionManager><transactionManager type="MANAGED">
  64.   <property name="closeConnection" value="false"/>
  65. </transactionManager><transactionManager type="MANAGED">
  66.   <property name="closeConnection" value="false"/>
  67. </transactionManager><transactionManager type="MANAGED">
  68.   <property name="closeConnection" value="false"/>
  69. </transactionManager><transactionManager type="MANAGED">
  70.   <property name="closeConnection" value="false"/>
  71. </transactionManager>dataSource = ds;<transactionManager type="MANAGED">
  72.   <property name="closeConnection" value="false"/>
  73. </transactionManager><transactionManager type="MANAGED">
  74.   <property name="closeConnection" value="false"/>
  75. </transactionManager><transactionManager type="MANAGED">
  76.   <property name="closeConnection" value="false"/>
  77. </transactionManager><transactionManager type="MANAGED">
  78.   <property name="closeConnection" value="false"/>
  79. </transactionManager><transactionManager type="MANAGED">
  80.   <property name="closeConnection" value="false"/>
  81. </transactionManager>level = desiredLevel;<transactionManager type="MANAGED">
  82.   <property name="closeConnection" value="false"/>
  83. </transactionManager><transactionManager type="MANAGED">
  84.   <property name="closeConnection" value="false"/>
  85. </transactionManager><transactionManager type="MANAGED">
  86.   <property name="closeConnection" value="false"/>
  87. </transactionManager><transactionManager type="MANAGED">
  88.   <property name="closeConnection" value="false"/>
  89. </transactionManager><transactionManager type="MANAGED">
  90.   <property name="closeConnection" value="false"/>
  91. </transactionManager>autoCommmit = desiredAutoCommit;<transactionManager type="MANAGED">
  92.   <property name="closeConnection" value="false"/>
  93. </transactionManager><transactionManager type="MANAGED">
  94.   <property name="closeConnection" value="false"/>
  95. </transactionManager><transactionManager type="MANAGED">
  96.   <property name="closeConnection" value="false"/>
  97. </transactionManager>}<transactionManager type="MANAGED">
  98.   <property name="closeConnection" value="false"/>
  99. </transactionManager><transactionManager type="MANAGED">
  100.   <property name="closeConnection" value="false"/>
  101. </transactionManager><transactionManager type="MANAGED">
  102.   <property name="closeConnection" value="false"/>
  103. </transactionManager> public JdbcTransaction(Connection connection) {<transactionManager type="MANAGED">
  104.   <property name="closeConnection" value="false"/>
  105. </transactionManager><transactionManager type="MANAGED">
  106.   <property name="closeConnection" value="false"/>
  107. </transactionManager><transactionManager type="MANAGED">
  108.   <property name="closeConnection" value="false"/>
  109. </transactionManager><transactionManager type="MANAGED">
  110.   <property name="closeConnection" value="false"/>
  111. </transactionManager><transactionManager type="MANAGED">
  112.   <property name="closeConnection" value="false"/>
  113. </transactionManager>this.connection = connection;<transactionManager type="MANAGED">
  114.   <property name="closeConnection" value="false"/>
  115. </transactionManager><transactionManager type="MANAGED">
  116.   <property name="closeConnection" value="false"/>
  117. </transactionManager><transactionManager type="MANAGED">
  118.   <property name="closeConnection" value="false"/>
  119. </transactionManager>}<transactionManager type="MANAGED">
  120.   <property name="closeConnection" value="false"/>
  121. </transactionManager><transactionManager type="MANAGED">
  122.   <property name="closeConnection" value="false"/>
  123. </transactionManager><transactionManager type="MANAGED">
  124.   <property name="closeConnection" value="false"/>
  125. </transactionManager> public Connection getConnection() throws SQLException {<transactionManager type="MANAGED">
  126.   <property name="closeConnection" value="false"/>
  127. </transactionManager><transactionManager type="MANAGED">
  128.   <property name="closeConnection" value="false"/>
  129. </transactionManager><transactionManager type="MANAGED">
  130.   <property name="closeConnection" value="false"/>
  131. </transactionManager><transactionManager type="MANAGED">
  132.   <property name="closeConnection" value="false"/>
  133. </transactionManager><transactionManager type="MANAGED">
  134.   <property name="closeConnection" value="false"/>
  135. </transactionManager>if (connection == null) {<transactionManager type="MANAGED">
  136.   <property name="closeConnection" value="false"/>
  137. </transactionManager><transactionManager type="MANAGED">
  138.   <property name="closeConnection" value="false"/>
  139. </transactionManager><transactionManager type="MANAGED">
  140.   <property name="closeConnection" value="false"/>
  141. </transactionManager><transactionManager type="MANAGED">
  142.   <property name="closeConnection" value="false"/>
  143. </transactionManager><transactionManager type="MANAGED">
  144.   <property name="closeConnection" value="false"/>
  145. </transactionManager><transactionManager type="MANAGED">
  146.   <property name="closeConnection" value="false"/>
  147. </transactionManager><transactionManager type="MANAGED">
  148.   <property name="closeConnection" value="false"/>
  149. </transactionManager>openConnection();<transactionManager type="MANAGED">
  150.   <property name="closeConnection" value="false"/>
  151. </transactionManager><transactionManager type="MANAGED">
  152.   <property name="closeConnection" value="false"/>
  153. </transactionManager><transactionManager type="MANAGED">
  154.   <property name="closeConnection" value="false"/>
  155. </transactionManager><transactionManager type="MANAGED">
  156.   <property name="closeConnection" value="false"/>
  157. </transactionManager><transactionManager type="MANAGED">
  158.   <property name="closeConnection" value="false"/>
  159. </transactionManager>}<transactionManager type="MANAGED">
  160.   <property name="closeConnection" value="false"/>
  161. </transactionManager><transactionManager type="MANAGED">
  162.   <property name="closeConnection" value="false"/>
  163. </transactionManager><transactionManager type="MANAGED">
  164.   <property name="closeConnection" value="false"/>
  165. </transactionManager><transactionManager type="MANAGED">
  166.   <property name="closeConnection" value="false"/>
  167. </transactionManager><transactionManager type="MANAGED">
  168.   <property name="closeConnection" value="false"/>
  169. </transactionManager>return connection;<transactionManager type="MANAGED">
  170.   <property name="closeConnection" value="false"/>
  171. </transactionManager><transactionManager type="MANAGED">
  172.   <property name="closeConnection" value="false"/>
  173. </transactionManager><transactionManager type="MANAGED">
  174.   <property name="closeConnection" value="false"/>
  175. </transactionManager>}<transactionManager type="MANAGED">
  176.   <property name="closeConnection" value="false"/>
  177. </transactionManager><transactionManager type="MANAGED">
  178.   <property name="closeConnection" value="false"/>
  179. </transactionManager><transactionManager type="MANAGED">
  180.   <property name="closeConnection" value="false"/>
  181. </transactionManager> /**<transactionManager type="MANAGED">
  182.   <property name="closeConnection" value="false"/>
  183. </transactionManager><transactionManager type="MANAGED">
  184.   <property name="closeConnection" value="false"/>
  185. </transactionManager><transactionManager type="MANAGED">
  186.   <property name="closeConnection" value="false"/>
  187. </transactionManager>* commit()功能 使用connection的commit()<transactionManager type="MANAGED">
  188.   <property name="closeConnection" value="false"/>
  189. </transactionManager><transactionManager type="MANAGED">
  190.   <property name="closeConnection" value="false"/>
  191. </transactionManager><transactionManager type="MANAGED">
  192.   <property name="closeConnection" value="false"/>
  193. </transactionManager>* @throws SQLException<transactionManager type="MANAGED">
  194.   <property name="closeConnection" value="false"/>
  195. </transactionManager><transactionManager type="MANAGED">
  196.   <property name="closeConnection" value="false"/>
  197. </transactionManager><transactionManager type="MANAGED">
  198.   <property name="closeConnection" value="false"/>
  199. </transactionManager>*/<transactionManager type="MANAGED">
  200.   <property name="closeConnection" value="false"/>
  201. </transactionManager><transactionManager type="MANAGED">
  202.   <property name="closeConnection" value="false"/>
  203. </transactionManager><transactionManager type="MANAGED">
  204.   <property name="closeConnection" value="false"/>
  205. </transactionManager>public void commit() throws SQLException {<transactionManager type="MANAGED">
  206.   <property name="closeConnection" value="false"/>
  207. </transactionManager><transactionManager type="MANAGED">
  208.   <property name="closeConnection" value="false"/>
  209. </transactionManager><transactionManager type="MANAGED">
  210.   <property name="closeConnection" value="false"/>
  211. </transactionManager><transactionManager type="MANAGED">
  212.   <property name="closeConnection" value="false"/>
  213. </transactionManager><transactionManager type="MANAGED">
  214.   <property name="closeConnection" value="false"/>
  215. </transactionManager>if (connection != null && !connection.getAutoCommit()) {<transactionManager type="MANAGED">
  216.   <property name="closeConnection" value="false"/>
  217. </transactionManager><transactionManager type="MANAGED">
  218.   <property name="closeConnection" value="false"/>
  219. </transactionManager><transactionManager type="MANAGED">
  220.   <property name="closeConnection" value="false"/>
  221. </transactionManager><transactionManager type="MANAGED">
  222.   <property name="closeConnection" value="false"/>
  223. </transactionManager><transactionManager type="MANAGED">
  224.   <property name="closeConnection" value="false"/>
  225. </transactionManager><transactionManager type="MANAGED">
  226.   <property name="closeConnection" value="false"/>
  227. </transactionManager><transactionManager type="MANAGED">
  228.   <property name="closeConnection" value="false"/>
  229. </transactionManager>if (log.isDebugEnabled()) {<transactionManager type="MANAGED">
  230.   <property name="closeConnection" value="false"/>
  231. </transactionManager><transactionManager type="MANAGED">
  232.   <property name="closeConnection" value="false"/>
  233. </transactionManager><transactionManager type="MANAGED">
  234.   <property name="closeConnection" value="false"/>
  235. </transactionManager><transactionManager type="MANAGED">
  236.   <property name="closeConnection" value="false"/>
  237. </transactionManager><transactionManager type="MANAGED">
  238.   <property name="closeConnection" value="false"/>
  239. </transactionManager><transactionManager type="MANAGED">
  240.   <property name="closeConnection" value="false"/>
  241. </transactionManager><transactionManager type="MANAGED">
  242.   <property name="closeConnection" value="false"/>
  243. </transactionManager><transactionManager type="MANAGED">
  244.   <property name="closeConnection" value="false"/>
  245. </transactionManager><transactionManager type="MANAGED">
  246.   <property name="closeConnection" value="false"/>
  247. </transactionManager>log.debug("Committing JDBC Connection [" + connection + "]");<transactionManager type="MANAGED">
  248.   <property name="closeConnection" value="false"/>
  249. </transactionManager><transactionManager type="MANAGED">
  250.   <property name="closeConnection" value="false"/>
  251. </transactionManager><transactionManager type="MANAGED">
  252.   <property name="closeConnection" value="false"/>
  253. </transactionManager><transactionManager type="MANAGED">
  254.   <property name="closeConnection" value="false"/>
  255. </transactionManager><transactionManager type="MANAGED">
  256.   <property name="closeConnection" value="false"/>
  257. </transactionManager><transactionManager type="MANAGED">
  258.   <property name="closeConnection" value="false"/>
  259. </transactionManager><transactionManager type="MANAGED">
  260.   <property name="closeConnection" value="false"/>
  261. </transactionManager>}<transactionManager type="MANAGED">
  262.   <property name="closeConnection" value="false"/>
  263. </transactionManager><transactionManager type="MANAGED">
  264.   <property name="closeConnection" value="false"/>
  265. </transactionManager><transactionManager type="MANAGED">
  266.   <property name="closeConnection" value="false"/>
  267. </transactionManager><transactionManager type="MANAGED">
  268.   <property name="closeConnection" value="false"/>
  269. </transactionManager><transactionManager type="MANAGED">
  270.   <property name="closeConnection" value="false"/>
  271. </transactionManager><transactionManager type="MANAGED">
  272.   <property name="closeConnection" value="false"/>
  273. </transactionManager><transactionManager type="MANAGED">
  274.   <property name="closeConnection" value="false"/>
  275. </transactionManager>connection.commit();<transactionManager type="MANAGED">
  276.   <property name="closeConnection" value="false"/>
  277. </transactionManager><transactionManager type="MANAGED">
  278.   <property name="closeConnection" value="false"/>
  279. </transactionManager><transactionManager type="MANAGED">
  280.   <property name="closeConnection" value="false"/>
  281. </transactionManager><transactionManager type="MANAGED">
  282.   <property name="closeConnection" value="false"/>
  283. </transactionManager><transactionManager type="MANAGED">
  284.   <property name="closeConnection" value="false"/>
  285. </transactionManager>}<transactionManager type="MANAGED">
  286.   <property name="closeConnection" value="false"/>
  287. </transactionManager><transactionManager type="MANAGED">
  288.   <property name="closeConnection" value="false"/>
  289. </transactionManager><transactionManager type="MANAGED">
  290.   <property name="closeConnection" value="false"/>
  291. </transactionManager>}<transactionManager type="MANAGED">
  292.   <property name="closeConnection" value="false"/>
  293. </transactionManager><transactionManager type="MANAGED">
  294.   <property name="closeConnection" value="false"/>
  295. </transactionManager><transactionManager type="MANAGED">
  296.   <property name="closeConnection" value="false"/>
  297. </transactionManager> /**<transactionManager type="MANAGED">
  298.   <property name="closeConnection" value="false"/>
  299. </transactionManager><transactionManager type="MANAGED">
  300.   <property name="closeConnection" value="false"/>
  301. </transactionManager><transactionManager type="MANAGED">
  302.   <property name="closeConnection" value="false"/>
  303. </transactionManager>* rollback()功能 使用connection的rollback()<transactionManager type="MANAGED">
  304.   <property name="closeConnection" value="false"/>
  305. </transactionManager><transactionManager type="MANAGED">
  306.   <property name="closeConnection" value="false"/>
  307. </transactionManager><transactionManager type="MANAGED">
  308.   <property name="closeConnection" value="false"/>
  309. </transactionManager>* @throws SQLException<transactionManager type="MANAGED">
  310.   <property name="closeConnection" value="false"/>
  311. </transactionManager><transactionManager type="MANAGED">
  312.   <property name="closeConnection" value="false"/>
  313. </transactionManager><transactionManager type="MANAGED">
  314.   <property name="closeConnection" value="false"/>
  315. </transactionManager>*/<transactionManager type="MANAGED">
  316.   <property name="closeConnection" value="false"/>
  317. </transactionManager><transactionManager type="MANAGED">
  318.   <property name="closeConnection" value="false"/>
  319. </transactionManager><transactionManager type="MANAGED">
  320.   <property name="closeConnection" value="false"/>
  321. </transactionManager>public void rollback() throws SQLException {<transactionManager type="MANAGED">
  322.   <property name="closeConnection" value="false"/>
  323. </transactionManager><transactionManager type="MANAGED">
  324.   <property name="closeConnection" value="false"/>
  325. </transactionManager><transactionManager type="MANAGED">
  326.   <property name="closeConnection" value="false"/>
  327. </transactionManager><transactionManager type="MANAGED">
  328.   <property name="closeConnection" value="false"/>
  329. </transactionManager><transactionManager type="MANAGED">
  330.   <property name="closeConnection" value="false"/>
  331. </transactionManager>if (connection != null && !connection.getAutoCommit()) {<transactionManager type="MANAGED">
  332.   <property name="closeConnection" value="false"/>
  333. </transactionManager><transactionManager type="MANAGED">
  334.   <property name="closeConnection" value="false"/>
  335. </transactionManager><transactionManager type="MANAGED">
  336.   <property name="closeConnection" value="false"/>
  337. </transactionManager><transactionManager type="MANAGED">
  338.   <property name="closeConnection" value="false"/>
  339. </transactionManager><transactionManager type="MANAGED">
  340.   <property name="closeConnection" value="false"/>
  341. </transactionManager><transactionManager type="MANAGED">
  342.   <property name="closeConnection" value="false"/>
  343. </transactionManager><transactionManager type="MANAGED">
  344.   <property name="closeConnection" value="false"/>
  345. </transactionManager>if (log.isDebugEnabled()) {<transactionManager type="MANAGED">
  346.   <property name="closeConnection" value="false"/>
  347. </transactionManager><transactionManager type="MANAGED">
  348.   <property name="closeConnection" value="false"/>
  349. </transactionManager><transactionManager type="MANAGED">
  350.   <property name="closeConnection" value="false"/>
  351. </transactionManager><transactionManager type="MANAGED">
  352.   <property name="closeConnection" value="false"/>
  353. </transactionManager><transactionManager type="MANAGED">
  354.   <property name="closeConnection" value="false"/>
  355. </transactionManager><transactionManager type="MANAGED">
  356.   <property name="closeConnection" value="false"/>
  357. </transactionManager><transactionManager type="MANAGED">
  358.   <property name="closeConnection" value="false"/>
  359. </transactionManager><transactionManager type="MANAGED">
  360.   <property name="closeConnection" value="false"/>
  361. </transactionManager><transactionManager type="MANAGED">
  362.   <property name="closeConnection" value="false"/>
  363. </transactionManager>log.debug("Rolling back JDBC Connection [" + connection + "]");<transactionManager type="MANAGED">
  364.   <property name="closeConnection" value="false"/>
  365. </transactionManager><transactionManager type="MANAGED">
  366.   <property name="closeConnection" value="false"/>
  367. </transactionManager><transactionManager type="MANAGED">
  368.   <property name="closeConnection" value="false"/>
  369. </transactionManager><transactionManager type="MANAGED">
  370.   <property name="closeConnection" value="false"/>
  371. </transactionManager><transactionManager type="MANAGED">
  372.   <property name="closeConnection" value="false"/>
  373. </transactionManager><transactionManager type="MANAGED">
  374.   <property name="closeConnection" value="false"/>
  375. </transactionManager><transactionManager type="MANAGED">
  376.   <property name="closeConnection" value="false"/>
  377. </transactionManager>}<transactionManager type="MANAGED">
  378.   <property name="closeConnection" value="false"/>
  379. </transactionManager><transactionManager type="MANAGED">
  380.   <property name="closeConnection" value="false"/>
  381. </transactionManager><transactionManager type="MANAGED">
  382.   <property name="closeConnection" value="false"/>
  383. </transactionManager><transactionManager type="MANAGED">
  384.   <property name="closeConnection" value="false"/>
  385. </transactionManager><transactionManager type="MANAGED">
  386.   <property name="closeConnection" value="false"/>
  387. </transactionManager><transactionManager type="MANAGED">
  388.   <property name="closeConnection" value="false"/>
  389. </transactionManager><transactionManager type="MANAGED">
  390.   <property name="closeConnection" value="false"/>
  391. </transactionManager>connection.rollback();<transactionManager type="MANAGED">
  392.   <property name="closeConnection" value="false"/>
  393. </transactionManager><transactionManager type="MANAGED">
  394.   <property name="closeConnection" value="false"/>
  395. </transactionManager><transactionManager type="MANAGED">
  396.   <property name="closeConnection" value="false"/>
  397. </transactionManager><transactionManager type="MANAGED">
  398.   <property name="closeConnection" value="false"/>
  399. </transactionManager><transactionManager type="MANAGED">
  400.   <property name="closeConnection" value="false"/>
  401. </transactionManager>}<transactionManager type="MANAGED">
  402.   <property name="closeConnection" value="false"/>
  403. </transactionManager><transactionManager type="MANAGED">
  404.   <property name="closeConnection" value="false"/>
  405. </transactionManager><transactionManager type="MANAGED">
  406.   <property name="closeConnection" value="false"/>
  407. </transactionManager>}<transactionManager type="MANAGED">
  408.   <property name="closeConnection" value="false"/>
  409. </transactionManager><transactionManager type="MANAGED">
  410.   <property name="closeConnection" value="false"/>
  411. </transactionManager><transactionManager type="MANAGED">
  412.   <property name="closeConnection" value="false"/>
  413. </transactionManager> /**<transactionManager type="MANAGED">
  414.   <property name="closeConnection" value="false"/>
  415. </transactionManager><transactionManager type="MANAGED">
  416.   <property name="closeConnection" value="false"/>
  417. </transactionManager><transactionManager type="MANAGED">
  418.   <property name="closeConnection" value="false"/>
  419. </transactionManager>* close()功能 使用connection的close()<transactionManager type="MANAGED">
  420.   <property name="closeConnection" value="false"/>
  421. </transactionManager><transactionManager type="MANAGED">
  422.   <property name="closeConnection" value="false"/>
  423. </transactionManager><transactionManager type="MANAGED">
  424.   <property name="closeConnection" value="false"/>
  425. </transactionManager>* @throws SQLException<transactionManager type="MANAGED">
  426.   <property name="closeConnection" value="false"/>
  427. </transactionManager><transactionManager type="MANAGED">
  428.   <property name="closeConnection" value="false"/>
  429. </transactionManager><transactionManager type="MANAGED">
  430.   <property name="closeConnection" value="false"/>
  431. </transactionManager>*/<transactionManager type="MANAGED">
  432.   <property name="closeConnection" value="false"/>
  433. </transactionManager><transactionManager type="MANAGED">
  434.   <property name="closeConnection" value="false"/>
  435. </transactionManager><transactionManager type="MANAGED">
  436.   <property name="closeConnection" value="false"/>
  437. </transactionManager>public void close() throws SQLException {<transactionManager type="MANAGED">
  438.   <property name="closeConnection" value="false"/>
  439. </transactionManager><transactionManager type="MANAGED">
  440.   <property name="closeConnection" value="false"/>
  441. </transactionManager><transactionManager type="MANAGED">
  442.   <property name="closeConnection" value="false"/>
  443. </transactionManager><transactionManager type="MANAGED">
  444.   <property name="closeConnection" value="false"/>
  445. </transactionManager><transactionManager type="MANAGED">
  446.   <property name="closeConnection" value="false"/>
  447. </transactionManager>if (connection != null) {<transactionManager type="MANAGED">
  448.   <property name="closeConnection" value="false"/>
  449. </transactionManager><transactionManager type="MANAGED">
  450.   <property name="closeConnection" value="false"/>
  451. </transactionManager><transactionManager type="MANAGED">
  452.   <property name="closeConnection" value="false"/>
  453. </transactionManager><transactionManager type="MANAGED">
  454.   <property name="closeConnection" value="false"/>
  455. </transactionManager><transactionManager type="MANAGED">
  456.   <property name="closeConnection" value="false"/>
  457. </transactionManager><transactionManager type="MANAGED">
  458.   <property name="closeConnection" value="false"/>
  459. </transactionManager><transactionManager type="MANAGED">
  460.   <property name="closeConnection" value="false"/>
  461. </transactionManager>resetAutoCommit();<transactionManager type="MANAGED">
  462.   <property name="closeConnection" value="false"/>
  463. </transactionManager><transactionManager type="MANAGED">
  464.   <property name="closeConnection" value="false"/>
  465. </transactionManager><transactionManager type="MANAGED">
  466.   <property name="closeConnection" value="false"/>
  467. </transactionManager><transactionManager type="MANAGED">
  468.   <property name="closeConnection" value="false"/>
  469. </transactionManager><transactionManager type="MANAGED">
  470.   <property name="closeConnection" value="false"/>
  471. </transactionManager><transactionManager type="MANAGED">
  472.   <property name="closeConnection" value="false"/>
  473. </transactionManager><transactionManager type="MANAGED">
  474.   <property name="closeConnection" value="false"/>
  475. </transactionManager>if (log.isDebugEnabled()) {<transactionManager type="MANAGED">
  476.   <property name="closeConnection" value="false"/>
  477. </transactionManager><transactionManager type="MANAGED">
  478.   <property name="closeConnection" value="false"/>
  479. </transactionManager><transactionManager type="MANAGED">
  480.   <property name="closeConnection" value="false"/>
  481. </transactionManager><transactionManager type="MANAGED">
  482.   <property name="closeConnection" value="false"/>
  483. </transactionManager><transactionManager type="MANAGED">
  484.   <property name="closeConnection" value="false"/>
  485. </transactionManager><transactionManager type="MANAGED">
  486.   <property name="closeConnection" value="false"/>
  487. </transactionManager><transactionManager type="MANAGED">
  488.   <property name="closeConnection" value="false"/>
  489. </transactionManager><transactionManager type="MANAGED">
  490.   <property name="closeConnection" value="false"/>
  491. </transactionManager><transactionManager type="MANAGED">
  492.   <property name="closeConnection" value="false"/>
  493. </transactionManager>log.debug("Closing JDBC Connection [" + connection + "]");<transactionManager type="MANAGED">
  494.   <property name="closeConnection" value="false"/>
  495. </transactionManager><transactionManager type="MANAGED">
  496.   <property name="closeConnection" value="false"/>
  497. </transactionManager><transactionManager type="MANAGED">
  498.   <property name="closeConnection" value="false"/>
  499. </transactionManager><transactionManager type="MANAGED">
  500.   <property name="closeConnection" value="false"/>
  501. </transactionManager><transactionManager type="MANAGED">
  502.   <property name="closeConnection" value="false"/>
  503. </transactionManager><transactionManager type="MANAGED">
  504.   <property name="closeConnection" value="false"/>
  505. </transactionManager><transactionManager type="MANAGED">
  506.   <property name="closeConnection" value="false"/>
  507. </transactionManager>}<transactionManager type="MANAGED">
  508.   <property name="closeConnection" value="false"/>
  509. </transactionManager><transactionManager type="MANAGED">
  510.   <property name="closeConnection" value="false"/>
  511. </transactionManager><transactionManager type="MANAGED">
  512.   <property name="closeConnection" value="false"/>
  513. </transactionManager><transactionManager type="MANAGED">
  514.   <property name="closeConnection" value="false"/>
  515. </transactionManager><transactionManager type="MANAGED">
  516.   <property name="closeConnection" value="false"/>
  517. </transactionManager><transactionManager type="MANAGED">
  518.   <property name="closeConnection" value="false"/>
  519. </transactionManager><transactionManager type="MANAGED">
  520.   <property name="closeConnection" value="false"/>
  521. </transactionManager>connection.close();<transactionManager type="MANAGED">
  522.   <property name="closeConnection" value="false"/>
  523. </transactionManager><transactionManager type="MANAGED">
  524.   <property name="closeConnection" value="false"/>
  525. </transactionManager><transactionManager type="MANAGED">
  526.   <property name="closeConnection" value="false"/>
  527. </transactionManager><transactionManager type="MANAGED">
  528.   <property name="closeConnection" value="false"/>
  529. </transactionManager><transactionManager type="MANAGED">
  530.   <property name="closeConnection" value="false"/>
  531. </transactionManager>}<transactionManager type="MANAGED">
  532.   <property name="closeConnection" value="false"/>
  533. </transactionManager><transactionManager type="MANAGED">
  534.   <property name="closeConnection" value="false"/>
  535. </transactionManager><transactionManager type="MANAGED">
  536.   <property name="closeConnection" value="false"/>
  537. </transactionManager>}<transactionManager type="MANAGED">
  538.   <property name="closeConnection" value="false"/>
  539. </transactionManager><transactionManager type="MANAGED">
  540.   <property name="closeConnection" value="false"/>
  541. </transactionManager><transactionManager type="MANAGED">
  542.   <property name="closeConnection" value="false"/>
  543. </transactionManager> protected void setDesiredAutoCommit(boolean desiredAutoCommit) {<transactionManager type="MANAGED">
  544.   <property name="closeConnection" value="false"/>
  545. </transactionManager><transactionManager type="MANAGED">
  546.   <property name="closeConnection" value="false"/>
  547. </transactionManager><transactionManager type="MANAGED">
  548.   <property name="closeConnection" value="false"/>
  549. </transactionManager><transactionManager type="MANAGED">
  550.   <property name="closeConnection" value="false"/>
  551. </transactionManager><transactionManager type="MANAGED">
  552.   <property name="closeConnection" value="false"/>
  553. </transactionManager>try {<transactionManager type="MANAGED">
  554.   <property name="closeConnection" value="false"/>
  555. </transactionManager><transactionManager type="MANAGED">
  556.   <property name="closeConnection" value="false"/>
  557. </transactionManager><transactionManager type="MANAGED">
  558.   <property name="closeConnection" value="false"/>
  559. </transactionManager><transactionManager type="MANAGED">
  560.   <property name="closeConnection" value="false"/>
  561. </transactionManager><transactionManager type="MANAGED">
  562.   <property name="closeConnection" value="false"/>
  563. </transactionManager><transactionManager type="MANAGED">
  564.   <property name="closeConnection" value="false"/>
  565. </transactionManager><transactionManager type="MANAGED">
  566.   <property name="closeConnection" value="false"/>
  567. </transactionManager>if (connection.getAutoCommit() != desiredAutoCommit) {<transactionManager type="MANAGED">
  568.   <property name="closeConnection" value="false"/>
  569. </transactionManager><transactionManager type="MANAGED">
  570.   <property name="closeConnection" value="false"/>
  571. </transactionManager><transactionManager type="MANAGED">
  572.   <property name="closeConnection" value="false"/>
  573. </transactionManager><transactionManager type="MANAGED">
  574.   <property name="closeConnection" value="false"/>
  575. </transactionManager><transactionManager type="MANAGED">
  576.   <property name="closeConnection" value="false"/>
  577. </transactionManager><transactionManager type="MANAGED">
  578.   <property name="closeConnection" value="false"/>
  579. </transactionManager><transactionManager type="MANAGED">
  580.   <property name="closeConnection" value="false"/>
  581. </transactionManager><transactionManager type="MANAGED">
  582.   <property name="closeConnection" value="false"/>
  583. </transactionManager><transactionManager type="MANAGED">
  584.   <property name="closeConnection" value="false"/>
  585. </transactionManager>if (log.isDebugEnabled()) {<transactionManager type="MANAGED">
  586.   <property name="closeConnection" value="false"/>
  587. </transactionManager><transactionManager type="MANAGED">
  588.   <property name="closeConnection" value="false"/>
  589. </transactionManager><transactionManager type="MANAGED">
  590.   <property name="closeConnection" value="false"/>
  591. </transactionManager><transactionManager type="MANAGED">
  592.   <property name="closeConnection" value="false"/>
  593. </transactionManager><transactionManager type="MANAGED">
  594.   <property name="closeConnection" value="false"/>
  595. </transactionManager><transactionManager type="MANAGED">
  596.   <property name="closeConnection" value="false"/>
  597. </transactionManager><transactionManager type="MANAGED">
  598.   <property name="closeConnection" value="false"/>
  599. </transactionManager><transactionManager type="MANAGED">
  600.   <property name="closeConnection" value="false"/>
  601. </transactionManager><transactionManager type="MANAGED">
  602.   <property name="closeConnection" value="false"/>
  603. </transactionManager><transactionManager type="MANAGED">
  604.   <property name="closeConnection" value="false"/>
  605. </transactionManager><transactionManager type="MANAGED">
  606.   <property name="closeConnection" value="false"/>
  607. </transactionManager>log.debug("Setting autocommit to " + desiredAutoCommit + " on JDBC Connection [" + connection + "]");<transactionManager type="MANAGED">
  608.   <property name="closeConnection" value="false"/>
  609. </transactionManager><transactionManager type="MANAGED">
  610.   <property name="closeConnection" value="false"/>
  611. </transactionManager><transactionManager type="MANAGED">
  612.   <property name="closeConnection" value="false"/>
  613. </transactionManager><transactionManager type="MANAGED">
  614.   <property name="closeConnection" value="false"/>
  615. </transactionManager><transactionManager type="MANAGED">
  616.   <property name="closeConnection" value="false"/>
  617. </transactionManager><transactionManager type="MANAGED">
  618.   <property name="closeConnection" value="false"/>
  619. </transactionManager><transactionManager type="MANAGED">
  620.   <property name="closeConnection" value="false"/>
  621. </transactionManager><transactionManager type="MANAGED">
  622.   <property name="closeConnection" value="false"/>
  623. </transactionManager><transactionManager type="MANAGED">
  624.   <property name="closeConnection" value="false"/>
  625. </transactionManager>}<transactionManager type="MANAGED">
  626.   <property name="closeConnection" value="false"/>
  627. </transactionManager><transactionManager type="MANAGED">
  628.   <property name="closeConnection" value="false"/>
  629. </transactionManager><transactionManager type="MANAGED">
  630.   <property name="closeConnection" value="false"/>
  631. </transactionManager><transactionManager type="MANAGED">
  632.   <property name="closeConnection" value="false"/>
  633. </transactionManager><transactionManager type="MANAGED">
  634.   <property name="closeConnection" value="false"/>
  635. </transactionManager><transactionManager type="MANAGED">
  636.   <property name="closeConnection" value="false"/>
  637. </transactionManager><transactionManager type="MANAGED">
  638.   <property name="closeConnection" value="false"/>
  639. </transactionManager><transactionManager type="MANAGED">
  640.   <property name="closeConnection" value="false"/>
  641. </transactionManager><transactionManager type="MANAGED">
  642.   <property name="closeConnection" value="false"/>
  643. </transactionManager>connection.setAutoCommit(desiredAutoCommit);<transactionManager type="MANAGED">
  644.   <property name="closeConnection" value="false"/>
  645. </transactionManager><transactionManager type="MANAGED">
  646.   <property name="closeConnection" value="false"/>
  647. </transactionManager><transactionManager type="MANAGED">
  648.   <property name="closeConnection" value="false"/>
  649. </transactionManager><transactionManager type="MANAGED">
  650.   <property name="closeConnection" value="false"/>
  651. </transactionManager><transactionManager type="MANAGED">
  652.   <property name="closeConnection" value="false"/>
  653. </transactionManager><transactionManager type="MANAGED">
  654.   <property name="closeConnection" value="false"/>
  655. </transactionManager><transactionManager type="MANAGED">
  656.   <property name="closeConnection" value="false"/>
  657. </transactionManager>}<transactionManager type="MANAGED">
  658.   <property name="closeConnection" value="false"/>
  659. </transactionManager><transactionManager type="MANAGED">
  660.   <property name="closeConnection" value="false"/>
  661. </transactionManager><transactionManager type="MANAGED">
  662.   <property name="closeConnection" value="false"/>
  663. </transactionManager><transactionManager type="MANAGED">
  664.   <property name="closeConnection" value="false"/>
  665. </transactionManager><transactionManager type="MANAGED">
  666.   <property name="closeConnection" value="false"/>
  667. </transactionManager>} catch (SQLException e) {<transactionManager type="MANAGED">
  668.   <property name="closeConnection" value="false"/>
  669. </transactionManager><transactionManager type="MANAGED">
  670.   <property name="closeConnection" value="false"/>
  671. </transactionManager><transactionManager type="MANAGED">
  672.   <property name="closeConnection" value="false"/>
  673. </transactionManager><transactionManager type="MANAGED">
  674.   <property name="closeConnection" value="false"/>
  675. </transactionManager><transactionManager type="MANAGED">
  676.   <property name="closeConnection" value="false"/>
  677. </transactionManager><transactionManager type="MANAGED">
  678.   <property name="closeConnection" value="false"/>
  679. </transactionManager><transactionManager type="MANAGED">
  680.   <property name="closeConnection" value="false"/>
  681. </transactionManager>// Only a very poorly implemented driver would fail here,<transactionManager type="MANAGED">
  682.   <property name="closeConnection" value="false"/>
  683. </transactionManager><transactionManager type="MANAGED">
  684.   <property name="closeConnection" value="false"/>
  685. </transactionManager><transactionManager type="MANAGED">
  686.   <property name="closeConnection" value="false"/>
  687. </transactionManager><transactionManager type="MANAGED">
  688.   <property name="closeConnection" value="false"/>
  689. </transactionManager><transactionManager type="MANAGED">
  690.   <property name="closeConnection" value="false"/>
  691. </transactionManager><transactionManager type="MANAGED">
  692.   <property name="closeConnection" value="false"/>
  693. </transactionManager><transactionManager type="MANAGED">
  694.   <property name="closeConnection" value="false"/>
  695. </transactionManager>// and there's not much we can do about that.<transactionManager type="MANAGED">
  696.   <property name="closeConnection" value="false"/>
  697. </transactionManager><transactionManager type="MANAGED">
  698.   <property name="closeConnection" value="false"/>
  699. </transactionManager><transactionManager type="MANAGED">
  700.   <property name="closeConnection" value="false"/>
  701. </transactionManager><transactionManager type="MANAGED">
  702.   <property name="closeConnection" value="false"/>
  703. </transactionManager><transactionManager type="MANAGED">
  704.   <property name="closeConnection" value="false"/>
  705. </transactionManager><transactionManager type="MANAGED">
  706.   <property name="closeConnection" value="false"/>
  707. </transactionManager><transactionManager type="MANAGED">
  708.   <property name="closeConnection" value="false"/>
  709. </transactionManager>throw new TransactionException("Error configuring AutoCommit.<transactionManager type="MANAGED">
  710.   <property name="closeConnection" value="false"/>
  711. </transactionManager>"<transactionManager type="MANAGED">
  712.   <property name="closeConnection" value="false"/>
  713. </transactionManager><transactionManager type="MANAGED">
  714.   <property name="closeConnection" value="false"/>
  715. </transactionManager><transactionManager type="MANAGED">
  716.   <property name="closeConnection" value="false"/>
  717. </transactionManager><transactionManager type="MANAGED">
  718.   <property name="closeConnection" value="false"/>
  719. </transactionManager><transactionManager type="MANAGED">
  720.   <property name="closeConnection" value="false"/>
  721. </transactionManager><transactionManager type="MANAGED">
  722.   <property name="closeConnection" value="false"/>
  723. </transactionManager><transactionManager type="MANAGED">
  724.   <property name="closeConnection" value="false"/>
  725. </transactionManager> + "Your driver may not support getAutoCommit() or setAutoCommit(). "<transactionManager type="MANAGED">
  726.   <property name="closeConnection" value="false"/>
  727. </transactionManager><transactionManager type="MANAGED">
  728.   <property name="closeConnection" value="false"/>
  729. </transactionManager><transactionManager type="MANAGED">
  730.   <property name="closeConnection" value="false"/>
  731. </transactionManager><transactionManager type="MANAGED">
  732.   <property name="closeConnection" value="false"/>
  733. </transactionManager><transactionManager type="MANAGED">
  734.   <property name="closeConnection" value="false"/>
  735. </transactionManager><transactionManager type="MANAGED">
  736.   <property name="closeConnection" value="false"/>
  737. </transactionManager><transactionManager type="MANAGED">
  738.   <property name="closeConnection" value="false"/>
  739. </transactionManager> + "Requested setting: " + desiredAutoCommit + ".<transactionManager type="MANAGED">
  740.   <property name="closeConnection" value="false"/>
  741. </transactionManager>Cause: " + e, e);<transactionManager type="MANAGED">
  742.   <property name="closeConnection" value="false"/>
  743. </transactionManager><transactionManager type="MANAGED">
  744.   <property name="closeConnection" value="false"/>
  745. </transactionManager><transactionManager type="MANAGED">
  746.   <property name="closeConnection" value="false"/>
  747. </transactionManager><transactionManager type="MANAGED">
  748.   <property name="closeConnection" value="false"/>
  749. </transactionManager><transactionManager type="MANAGED">
  750.   <property name="closeConnection" value="false"/>
  751. </transactionManager>}<transactionManager type="MANAGED">
  752.   <property name="closeConnection" value="false"/>
  753. </transactionManager><transactionManager type="MANAGED">
  754.   <property name="closeConnection" value="false"/>
  755. </transactionManager><transactionManager type="MANAGED">
  756.   <property name="closeConnection" value="false"/>
  757. </transactionManager>}<transactionManager type="MANAGED">
  758.   <property name="closeConnection" value="false"/>
  759. </transactionManager><transactionManager type="MANAGED">
  760.   <property name="closeConnection" value="false"/>
  761. </transactionManager><transactionManager type="MANAGED">
  762.   <property name="closeConnection" value="false"/>
  763. </transactionManager> protected void resetAutoCommit() {<transactionManager type="MANAGED">
  764.   <property name="closeConnection" value="false"/>
  765. </transactionManager><transactionManager type="MANAGED">
  766.   <property name="closeConnection" value="false"/>
  767. </transactionManager><transactionManager type="MANAGED">
  768.   <property name="closeConnection" value="false"/>
  769. </transactionManager><transactionManager type="MANAGED">
  770.   <property name="closeConnection" value="false"/>
  771. </transactionManager><transactionManager type="MANAGED">
  772.   <property name="closeConnection" value="false"/>
  773. </transactionManager>try {<transactionManager type="MANAGED">
  774.   <property name="closeConnection" value="false"/>
  775. </transactionManager><transactionManager type="MANAGED">
  776.   <property name="closeConnection" value="false"/>
  777. </transactionManager><transactionManager type="MANAGED">
  778.   <property name="closeConnection" value="false"/>
  779. </transactionManager><transactionManager type="MANAGED">
  780.   <property name="closeConnection" value="false"/>
  781. </transactionManager><transactionManager type="MANAGED">
  782.   <property name="closeConnection" value="false"/>
  783. </transactionManager><transactionManager type="MANAGED">
  784.   <property name="closeConnection" value="false"/>
  785. </transactionManager><transactionManager type="MANAGED">
  786.   <property name="closeConnection" value="false"/>
  787. </transactionManager>if (!connection.getAutoCommit()) {<transactionManager type="MANAGED">
  788.   <property name="closeConnection" value="false"/>
  789. </transactionManager><transactionManager type="MANAGED">
  790.   <property name="closeConnection" value="false"/>
  791. </transactionManager><transactionManager type="MANAGED">
  792.   <property name="closeConnection" value="false"/>
  793. </transactionManager><transactionManager type="MANAGED">
  794.   <property name="closeConnection" value="false"/>
  795. </transactionManager><transactionManager type="MANAGED">
  796.   <property name="closeConnection" value="false"/>
  797. </transactionManager><transactionManager type="MANAGED">
  798.   <property name="closeConnection" value="false"/>
  799. </transactionManager><transactionManager type="MANAGED">
  800.   <property name="closeConnection" value="false"/>
  801. </transactionManager><transactionManager type="MANAGED">
  802.   <property name="closeConnection" value="false"/>
  803. </transactionManager><transactionManager type="MANAGED">
  804.   <property name="closeConnection" value="false"/>
  805. </transactionManager>// MyBatis does not call commit/rollback on a connection if just selects were performed.<transactionManager type="MANAGED">
  806.   <property name="closeConnection" value="false"/>
  807. </transactionManager><transactionManager type="MANAGED">
  808.   <property name="closeConnection" value="false"/>
  809. </transactionManager><transactionManager type="MANAGED">
  810.   <property name="closeConnection" value="false"/>
  811. </transactionManager><transactionManager type="MANAGED">
  812.   <property name="closeConnection" value="false"/>
  813. </transactionManager><transactionManager type="MANAGED">
  814.   <property name="closeConnection" value="false"/>
  815. </transactionManager><transactionManager type="MANAGED">
  816.   <property name="closeConnection" value="false"/>
  817. </transactionManager><transactionManager type="MANAGED">
  818.   <property name="closeConnection" value="false"/>
  819. </transactionManager><transactionManager type="MANAGED">
  820.   <property name="closeConnection" value="false"/>
  821. </transactionManager><transactionManager type="MANAGED">
  822.   <property name="closeConnection" value="false"/>
  823. </transactionManager>// Some databases start transactions with select statements<transactionManager type="MANAGED">
  824.   <property name="closeConnection" value="false"/>
  825. </transactionManager><transactionManager type="MANAGED">
  826.   <property name="closeConnection" value="false"/>
  827. </transactionManager><transactionManager type="MANAGED">
  828.   <property name="closeConnection" value="false"/>
  829. </transactionManager><transactionManager type="MANAGED">
  830.   <property name="closeConnection" value="false"/>
  831. </transactionManager><transactionManager type="MANAGED">
  832.   <property name="closeConnection" value="false"/>
  833. </transactionManager><transactionManager type="MANAGED">
  834.   <property name="closeConnection" value="false"/>
  835. </transactionManager><transactionManager type="MANAGED">
  836.   <property name="closeConnection" value="false"/>
  837. </transactionManager><transactionManager type="MANAGED">
  838.   <property name="closeConnection" value="false"/>
  839. </transactionManager><transactionManager type="MANAGED">
  840.   <property name="closeConnection" value="false"/>
  841. </transactionManager>// and they mandate a commit/rollback before closing the connection.<transactionManager type="MANAGED">
  842.   <property name="closeConnection" value="false"/>
  843. </transactionManager><transactionManager type="MANAGED">
  844.   <property name="closeConnection" value="false"/>
  845. </transactionManager><transactionManager type="MANAGED">
  846.   <property name="closeConnection" value="false"/>
  847. </transactionManager><transactionManager type="MANAGED">
  848.   <property name="closeConnection" value="false"/>
  849. </transactionManager><transactionManager type="MANAGED">
  850.   <property name="closeConnection" value="false"/>
  851. </transactionManager><transactionManager type="MANAGED">
  852.   <property name="closeConnection" value="false"/>
  853. </transactionManager><transactionManager type="MANAGED">
  854.   <property name="closeConnection" value="false"/>
  855. </transactionManager><transactionManager type="MANAGED">
  856.   <property name="closeConnection" value="false"/>
  857. </transactionManager><transactionManager type="MANAGED">
  858.   <property name="closeConnection" value="false"/>
  859. </transactionManager>// A workaround is setting the autocommit to true before closing the connection.<transactionManager type="MANAGED">
  860.   <property name="closeConnection" value="false"/>
  861. </transactionManager><transactionManager type="MANAGED">
  862.   <property name="closeConnection" value="false"/>
  863. </transactionManager><transactionManager type="MANAGED">
  864.   <property name="closeConnection" value="false"/>
  865. </transactionManager><transactionManager type="MANAGED">
  866.   <property name="closeConnection" value="false"/>
  867. </transactionManager><transactionManager type="MANAGED">
  868.   <property name="closeConnection" value="false"/>
  869. </transactionManager><transactionManager type="MANAGED">
  870.   <property name="closeConnection" value="false"/>
  871. </transactionManager><transactionManager type="MANAGED">
  872.   <property name="closeConnection" value="false"/>
  873. </transactionManager><transactionManager type="MANAGED">
  874.   <property name="closeConnection" value="false"/>
  875. </transactionManager><transactionManager type="MANAGED">
  876.   <property name="closeConnection" value="false"/>
  877. </transactionManager>// Sybase throws an exception here.<transactionManager type="MANAGED">
  878.   <property name="closeConnection" value="false"/>
  879. </transactionManager><transactionManager type="MANAGED">
  880.   <property name="closeConnection" value="false"/>
  881. </transactionManager><transactionManager type="MANAGED">
  882.   <property name="closeConnection" value="false"/>
  883. </transactionManager><transactionManager type="MANAGED">
  884.   <property name="closeConnection" value="false"/>
  885. </transactionManager><transactionManager type="MANAGED">
  886.   <property name="closeConnection" value="false"/>
  887. </transactionManager><transactionManager type="MANAGED">
  888.   <property name="closeConnection" value="false"/>
  889. </transactionManager><transactionManager type="MANAGED">
  890.   <property name="closeConnection" value="false"/>
  891. </transactionManager><transactionManager type="MANAGED">
  892.   <property name="closeConnection" value="false"/>
  893. </transactionManager><transactionManager type="MANAGED">
  894.   <property name="closeConnection" value="false"/>
  895. </transactionManager>if (log.isDebugEnabled()) {<transactionManager type="MANAGED">
  896.   <property name="closeConnection" value="false"/>
  897. </transactionManager><transactionManager type="MANAGED">
  898.   <property name="closeConnection" value="false"/>
  899. </transactionManager><transactionManager type="MANAGED">
  900.   <property name="closeConnection" value="false"/>
  901. </transactionManager><transactionManager type="MANAGED">
  902.   <property name="closeConnection" value="false"/>
  903. </transactionManager><transactionManager type="MANAGED">
  904.   <property name="closeConnection" value="false"/>
  905. </transactionManager><transactionManager type="MANAGED">
  906.   <property name="closeConnection" value="false"/>
  907. </transactionManager><transactionManager type="MANAGED">
  908.   <property name="closeConnection" value="false"/>
  909. </transactionManager><transactionManager type="MANAGED">
  910.   <property name="closeConnection" value="false"/>
  911. </transactionManager><transactionManager type="MANAGED">
  912.   <property name="closeConnection" value="false"/>
  913. </transactionManager><transactionManager type="MANAGED">
  914.   <property name="closeConnection" value="false"/>
  915. </transactionManager><transactionManager type="MANAGED">
  916.   <property name="closeConnection" value="false"/>
  917. </transactionManager>log.debug("Resetting autocommit to true on JDBC Connection [" + connection + "]");<transactionManager type="MANAGED">
  918.   <property name="closeConnection" value="false"/>
  919. </transactionManager><transactionManager type="MANAGED">
  920.   <property name="closeConnection" value="false"/>
  921. </transactionManager><transactionManager type="MANAGED">
  922.   <property name="closeConnection" value="false"/>
  923. </transactionManager><transactionManager type="MANAGED">
  924.   <property name="closeConnection" value="false"/>
  925. </transactionManager><transactionManager type="MANAGED">
  926.   <property name="closeConnection" value="false"/>
  927. </transactionManager><transactionManager type="MANAGED">
  928.   <property name="closeConnection" value="false"/>
  929. </transactionManager><transactionManager type="MANAGED">
  930.   <property name="closeConnection" value="false"/>
  931. </transactionManager><transactionManager type="MANAGED">
  932.   <property name="closeConnection" value="false"/>
  933. </transactionManager><transactionManager type="MANAGED">
  934.   <property name="closeConnection" value="false"/>
  935. </transactionManager>}<transactionManager type="MANAGED">
  936.   <property name="closeConnection" value="false"/>
  937. </transactionManager><transactionManager type="MANAGED">
  938.   <property name="closeConnection" value="false"/>
  939. </transactionManager><transactionManager type="MANAGED">
  940.   <property name="closeConnection" value="false"/>
  941. </transactionManager><transactionManager type="MANAGED">
  942.   <property name="closeConnection" value="false"/>
  943. </transactionManager><transactionManager type="MANAGED">
  944.   <property name="closeConnection" value="false"/>
  945. </transactionManager><transactionManager type="MANAGED">
  946.   <property name="closeConnection" value="false"/>
  947. </transactionManager><transactionManager type="MANAGED">
  948.   <property name="closeConnection" value="false"/>
  949. </transactionManager><transactionManager type="MANAGED">
  950.   <property name="closeConnection" value="false"/>
  951. </transactionManager><transactionManager type="MANAGED">
  952.   <property name="closeConnection" value="false"/>
  953. </transactionManager>connection.setAutoCommit(true);<transactionManager type="MANAGED">
  954.   <property name="closeConnection" value="false"/>
  955. </transactionManager><transactionManager type="MANAGED">
  956.   <property name="closeConnection" value="false"/>
  957. </transactionManager><transactionManager type="MANAGED">
  958.   <property name="closeConnection" value="false"/>
  959. </transactionManager><transactionManager type="MANAGED">
  960.   <property name="closeConnection" value="false"/>
  961. </transactionManager><transactionManager type="MANAGED">
  962.   <property name="closeConnection" value="false"/>
  963. </transactionManager><transactionManager type="MANAGED">
  964.   <property name="closeConnection" value="false"/>
  965. </transactionManager><transactionManager type="MANAGED">
  966.   <property name="closeConnection" value="false"/>
  967. </transactionManager>}<transactionManager type="MANAGED">
  968.   <property name="closeConnection" value="false"/>
  969. </transactionManager><transactionManager type="MANAGED">
  970.   <property name="closeConnection" value="false"/>
  971. </transactionManager><transactionManager type="MANAGED">
  972.   <property name="closeConnection" value="false"/>
  973. </transactionManager><transactionManager type="MANAGED">
  974.   <property name="closeConnection" value="false"/>
  975. </transactionManager><transactionManager type="MANAGED">
  976.   <property name="closeConnection" value="false"/>
  977. </transactionManager>} catch (SQLException e) {<transactionManager type="MANAGED">
  978.   <property name="closeConnection" value="false"/>
  979. </transactionManager><transactionManager type="MANAGED">
  980.   <property name="closeConnection" value="false"/>
  981. </transactionManager><transactionManager type="MANAGED">
  982.   <property name="closeConnection" value="false"/>
  983. </transactionManager><transactionManager type="MANAGED">
  984.   <property name="closeConnection" value="false"/>
  985. </transactionManager><transactionManager type="MANAGED">
  986.   <property name="closeConnection" value="false"/>
  987. </transactionManager><transactionManager type="MANAGED">
  988.   <property name="closeConnection" value="false"/>
  989. </transactionManager><transactionManager type="MANAGED">
  990.   <property name="closeConnection" value="false"/>
  991. </transactionManager>log.debug("Error resetting autocommit to true "<transactionManager type="MANAGED">
  992.   <property name="closeConnection" value="false"/>
  993. </transactionManager><transactionManager type="MANAGED">
  994.   <property name="closeConnection" value="false"/>
  995. </transactionManager><transactionManager type="MANAGED">
  996.   <property name="closeConnection" value="false"/>
  997. </transactionManager><transactionManager type="MANAGED">
  998.   <property name="closeConnection" value="false"/>
  999. </transactionManager><transactionManager type="MANAGED">
  1000.   <property name="closeConnection" value="false"/>
  1001. </transactionManager><transactionManager type="MANAGED">
  1002.   <property name="closeConnection" value="false"/>
  1003. </transactionManager><transactionManager type="MANAGED">
  1004.   <property name="closeConnection" value="false"/>
  1005. </transactionManager> + "before closing the connection.<transactionManager type="MANAGED">
  1006.   <property name="closeConnection" value="false"/>
  1007. </transactionManager>Cause: " + e);<transactionManager type="MANAGED">
  1008.   <property name="closeConnection" value="false"/>
  1009. </transactionManager><transactionManager type="MANAGED">
  1010.   <property name="closeConnection" value="false"/>
  1011. </transactionManager><transactionManager type="MANAGED">
  1012.   <property name="closeConnection" value="false"/>
  1013. </transactionManager><transactionManager type="MANAGED">
  1014.   <property name="closeConnection" value="false"/>
  1015. </transactionManager><transactionManager type="MANAGED">
  1016.   <property name="closeConnection" value="false"/>
  1017. </transactionManager>}<transactionManager type="MANAGED">
  1018.   <property name="closeConnection" value="false"/>
  1019. </transactionManager><transactionManager type="MANAGED">
  1020.   <property name="closeConnection" value="false"/>
  1021. </transactionManager><transactionManager type="MANAGED">
  1022.   <property name="closeConnection" value="false"/>
  1023. </transactionManager>}<transactionManager type="MANAGED">
  1024.   <property name="closeConnection" value="false"/>
  1025. </transactionManager><transactionManager type="MANAGED">
  1026.   <property name="closeConnection" value="false"/>
  1027. </transactionManager><transactionManager type="MANAGED">
  1028.   <property name="closeConnection" value="false"/>
  1029. </transactionManager> protected void openConnection() throws SQLException {<transactionManager type="MANAGED">
  1030.   <property name="closeConnection" value="false"/>
  1031. </transactionManager><transactionManager type="MANAGED">
  1032.   <property name="closeConnection" value="false"/>
  1033. </transactionManager><transactionManager type="MANAGED">
  1034.   <property name="closeConnection" value="false"/>
  1035. </transactionManager><transactionManager type="MANAGED">
  1036.   <property name="closeConnection" value="false"/>
  1037. </transactionManager><transactionManager type="MANAGED">
  1038.   <property name="closeConnection" value="false"/>
  1039. </transactionManager>if (log.isDebugEnabled()) {<transactionManager type="MANAGED">
  1040.   <property name="closeConnection" value="false"/>
  1041. </transactionManager><transactionManager type="MANAGED">
  1042.   <property name="closeConnection" value="false"/>
  1043. </transactionManager><transactionManager type="MANAGED">
  1044.   <property name="closeConnection" value="false"/>
  1045. </transactionManager><transactionManager type="MANAGED">
  1046.   <property name="closeConnection" value="false"/>
  1047. </transactionManager><transactionManager type="MANAGED">
  1048.   <property name="closeConnection" value="false"/>
  1049. </transactionManager><transactionManager type="MANAGED">
  1050.   <property name="closeConnection" value="false"/>
  1051. </transactionManager><transactionManager type="MANAGED">
  1052.   <property name="closeConnection" value="false"/>
  1053. </transactionManager>log.debug("Opening JDBC Connection");<transactionManager type="MANAGED">
  1054.   <property name="closeConnection" value="false"/>
  1055. </transactionManager><transactionManager type="MANAGED">
  1056.   <property name="closeConnection" value="false"/>
  1057. </transactionManager><transactionManager type="MANAGED">
  1058.   <property name="closeConnection" value="false"/>
  1059. </transactionManager><transactionManager type="MANAGED">
  1060.   <property name="closeConnection" value="false"/>
  1061. </transactionManager><transactionManager type="MANAGED">
  1062.   <property name="closeConnection" value="false"/>
  1063. </transactionManager>}<transactionManager type="MANAGED">
  1064.   <property name="closeConnection" value="false"/>
  1065. </transactionManager><transactionManager type="MANAGED">
  1066.   <property name="closeConnection" value="false"/>
  1067. </transactionManager><transactionManager type="MANAGED">
  1068.   <property name="closeConnection" value="false"/>
  1069. </transactionManager><transactionManager type="MANAGED">
  1070.   <property name="closeConnection" value="false"/>
  1071. </transactionManager><transactionManager type="MANAGED">
  1072.   <property name="closeConnection" value="false"/>
  1073. </transactionManager>connection = dataSource.getConnection();<transactionManager type="MANAGED">
  1074.   <property name="closeConnection" value="false"/>
  1075. </transactionManager><transactionManager type="MANAGED">
  1076.   <property name="closeConnection" value="false"/>
  1077. </transactionManager><transactionManager type="MANAGED">
  1078.   <property name="closeConnection" value="false"/>
  1079. </transactionManager><transactionManager type="MANAGED">
  1080.   <property name="closeConnection" value="false"/>
  1081. </transactionManager><transactionManager type="MANAGED">
  1082.   <property name="closeConnection" value="false"/>
  1083. </transactionManager>if (level != null) {<transactionManager type="MANAGED">
  1084.   <property name="closeConnection" value="false"/>
  1085. </transactionManager><transactionManager type="MANAGED">
  1086.   <property name="closeConnection" value="false"/>
  1087. </transactionManager><transactionManager type="MANAGED">
  1088.   <property name="closeConnection" value="false"/>
  1089. </transactionManager><transactionManager type="MANAGED">
  1090.   <property name="closeConnection" value="false"/>
  1091. </transactionManager><transactionManager type="MANAGED">
  1092.   <property name="closeConnection" value="false"/>
  1093. </transactionManager><transactionManager type="MANAGED">
  1094.   <property name="closeConnection" value="false"/>
  1095. </transactionManager><transactionManager type="MANAGED">
  1096.   <property name="closeConnection" value="false"/>
  1097. </transactionManager>connection.setTransactionIsolation(level.getLevel());<transactionManager type="MANAGED">
  1098.   <property name="closeConnection" value="false"/>
  1099. </transactionManager><transactionManager type="MANAGED">
  1100.   <property name="closeConnection" value="false"/>
  1101. </transactionManager><transactionManager type="MANAGED">
  1102.   <property name="closeConnection" value="false"/>
  1103. </transactionManager><transactionManager type="MANAGED">
  1104.   <property name="closeConnection" value="false"/>
  1105. </transactionManager><transactionManager type="MANAGED">
  1106.   <property name="closeConnection" value="false"/>
  1107. </transactionManager>}<transactionManager type="MANAGED">
  1108.   <property name="closeConnection" value="false"/>
  1109. </transactionManager><transactionManager type="MANAGED">
  1110.   <property name="closeConnection" value="false"/>
  1111. </transactionManager><transactionManager type="MANAGED">
  1112.   <property name="closeConnection" value="false"/>
  1113. </transactionManager><transactionManager type="MANAGED">
  1114.   <property name="closeConnection" value="false"/>
  1115. </transactionManager><transactionManager type="MANAGED">
  1116.   <property name="closeConnection" value="false"/>
  1117. </transactionManager>setDesiredAutoCommit(autoCommmit);<transactionManager type="MANAGED">
  1118.   <property name="closeConnection" value="false"/>
  1119. </transactionManager><transactionManager type="MANAGED">
  1120.   <property name="closeConnection" value="false"/>
  1121. </transactionManager><transactionManager type="MANAGED">
  1122.   <property name="closeConnection" value="false"/>
  1123. </transactionManager>}<transactionManager type="MANAGED">
  1124.   <property name="closeConnection" value="false"/>
  1125. </transactionManager> }<transactionManager type="MANAGED">
  1126.   <property name="closeConnection" value="false"/>
  1127. </transactionManager>
复制代码
ManagedTransaction

ManagedTransaction让容器来管理事务Transaction的整个生命周期,意思就是说,使用ManagedTransaction的commit和rollback功能不会对事务有任何的影响,它什么都不会做,它将事务管理的权利移交给了容器来实现。看如下Managed的实现代码大家就会一目了然:
  1. /**<transactionManager type="MANAGED">
  2.   <property name="closeConnection" value="false"/>
  3. </transactionManager>*<transactionManager type="MANAGED">
  4.   <property name="closeConnection" value="false"/>
  5. </transactionManager> * 让容器管理事务transaction的整个生命周期<transactionManager type="MANAGED">
  6.   <property name="closeConnection" value="false"/>
  7. </transactionManager>* connection的获取延迟到getConnection()方法的调用<transactionManager type="MANAGED">
  8.   <property name="closeConnection" value="false"/>
  9. </transactionManager>* 忽略所有的commit和rollback使用<transactionManager type="MANAGED">
  10.   <property name="closeConnection" value="false"/>
  11. </transactionManager>* 默认情况下,可以关闭一个毗连connection,也可以配置它不可以关闭一个毗连<transactionManager type="MANAGED">
  12.   <property name="closeConnection" value="false"/>
  13. </transactionManager>* 让容器来管理transaction的整个生命周期<transactionManager type="MANAGED">
  14.   <property name="closeConnection" value="false"/>
  15. </transactionManager>* @see ManagedTransactionFactory<transactionManager type="MANAGED">
  16.   <property name="closeConnection" value="false"/>
  17. </transactionManager>*/<transactionManager type="MANAGED">
  18.   <property name="closeConnection" value="false"/>
  19. </transactionManager> public class ManagedTransaction implements Transaction {<transactionManager type="MANAGED">
  20.   <property name="closeConnection" value="false"/>
  21. </transactionManager><transactionManager type="MANAGED">
  22.   <property name="closeConnection" value="false"/>
  23. </transactionManager><transactionManager type="MANAGED">
  24.   <property name="closeConnection" value="false"/>
  25. </transactionManager> private static final Log log = LogFactory.getLog(ManagedTransaction.class);<transactionManager type="MANAGED">
  26.   <property name="closeConnection" value="false"/>
  27. </transactionManager><transactionManager type="MANAGED">
  28.   <property name="closeConnection" value="false"/>
  29. </transactionManager><transactionManager type="MANAGED">
  30.   <property name="closeConnection" value="false"/>
  31. </transactionManager> private DataSource dataSource;<transactionManager type="MANAGED">
  32.   <property name="closeConnection" value="false"/>
  33. </transactionManager><transactionManager type="MANAGED">
  34.   <property name="closeConnection" value="false"/>
  35. </transactionManager><transactionManager type="MANAGED">
  36.   <property name="closeConnection" value="false"/>
  37. </transactionManager>private TransactionIsolationLevel level;<transactionManager type="MANAGED">
  38.   <property name="closeConnection" value="false"/>
  39. </transactionManager><transactionManager type="MANAGED">
  40.   <property name="closeConnection" value="false"/>
  41. </transactionManager><transactionManager type="MANAGED">
  42.   <property name="closeConnection" value="false"/>
  43. </transactionManager>private Connection connection;<transactionManager type="MANAGED">
  44.   <property name="closeConnection" value="false"/>
  45. </transactionManager><transactionManager type="MANAGED">
  46.   <property name="closeConnection" value="false"/>
  47. </transactionManager><transactionManager type="MANAGED">
  48.   <property name="closeConnection" value="false"/>
  49. </transactionManager>private boolean closeConnection;<transactionManager type="MANAGED">
  50.   <property name="closeConnection" value="false"/>
  51. </transactionManager><transactionManager type="MANAGED">
  52.   <property name="closeConnection" value="false"/>
  53. </transactionManager><transactionManager type="MANAGED">
  54.   <property name="closeConnection" value="false"/>
  55. </transactionManager> public ManagedTransaction(Connection connection, boolean closeConnection) {<transactionManager type="MANAGED">
  56.   <property name="closeConnection" value="false"/>
  57. </transactionManager><transactionManager type="MANAGED">
  58.   <property name="closeConnection" value="false"/>
  59. </transactionManager><transactionManager type="MANAGED">
  60.   <property name="closeConnection" value="false"/>
  61. </transactionManager><transactionManager type="MANAGED">
  62.   <property name="closeConnection" value="false"/>
  63. </transactionManager><transactionManager type="MANAGED">
  64.   <property name="closeConnection" value="false"/>
  65. </transactionManager>this.connection = connection;<transactionManager type="MANAGED">
  66.   <property name="closeConnection" value="false"/>
  67. </transactionManager><transactionManager type="MANAGED">
  68.   <property name="closeConnection" value="false"/>
  69. </transactionManager><transactionManager type="MANAGED">
  70.   <property name="closeConnection" value="false"/>
  71. </transactionManager><transactionManager type="MANAGED">
  72.   <property name="closeConnection" value="false"/>
  73. </transactionManager><transactionManager type="MANAGED">
  74.   <property name="closeConnection" value="false"/>
  75. </transactionManager>this.closeConnection = closeConnection;<transactionManager type="MANAGED">
  76.   <property name="closeConnection" value="false"/>
  77. </transactionManager><transactionManager type="MANAGED">
  78.   <property name="closeConnection" value="false"/>
  79. </transactionManager><transactionManager type="MANAGED">
  80.   <property name="closeConnection" value="false"/>
  81. </transactionManager>}<transactionManager type="MANAGED">
  82.   <property name="closeConnection" value="false"/>
  83. </transactionManager><transactionManager type="MANAGED">
  84.   <property name="closeConnection" value="false"/>
  85. </transactionManager><transactionManager type="MANAGED">
  86.   <property name="closeConnection" value="false"/>
  87. </transactionManager> public ManagedTransaction(DataSource ds, TransactionIsolationLevel level, boolean closeConnection) {<transactionManager type="MANAGED">
  88.   <property name="closeConnection" value="false"/>
  89. </transactionManager><transactionManager type="MANAGED">
  90.   <property name="closeConnection" value="false"/>
  91. </transactionManager><transactionManager type="MANAGED">
  92.   <property name="closeConnection" value="false"/>
  93. </transactionManager><transactionManager type="MANAGED">
  94.   <property name="closeConnection" value="false"/>
  95. </transactionManager><transactionManager type="MANAGED">
  96.   <property name="closeConnection" value="false"/>
  97. </transactionManager>this.dataSource = ds;<transactionManager type="MANAGED">
  98.   <property name="closeConnection" value="false"/>
  99. </transactionManager><transactionManager type="MANAGED">
  100.   <property name="closeConnection" value="false"/>
  101. </transactionManager><transactionManager type="MANAGED">
  102.   <property name="closeConnection" value="false"/>
  103. </transactionManager><transactionManager type="MANAGED">
  104.   <property name="closeConnection" value="false"/>
  105. </transactionManager><transactionManager type="MANAGED">
  106.   <property name="closeConnection" value="false"/>
  107. </transactionManager>this.level = level;<transactionManager type="MANAGED">
  108.   <property name="closeConnection" value="false"/>
  109. </transactionManager><transactionManager type="MANAGED">
  110.   <property name="closeConnection" value="false"/>
  111. </transactionManager><transactionManager type="MANAGED">
  112.   <property name="closeConnection" value="false"/>
  113. </transactionManager><transactionManager type="MANAGED">
  114.   <property name="closeConnection" value="false"/>
  115. </transactionManager><transactionManager type="MANAGED">
  116.   <property name="closeConnection" value="false"/>
  117. </transactionManager>this.closeConnection = closeConnection;<transactionManager type="MANAGED">
  118.   <property name="closeConnection" value="false"/>
  119. </transactionManager><transactionManager type="MANAGED">
  120.   <property name="closeConnection" value="false"/>
  121. </transactionManager><transactionManager type="MANAGED">
  122.   <property name="closeConnection" value="false"/>
  123. </transactionManager>}<transactionManager type="MANAGED">
  124.   <property name="closeConnection" value="false"/>
  125. </transactionManager><transactionManager type="MANAGED">
  126.   <property name="closeConnection" value="false"/>
  127. </transactionManager><transactionManager type="MANAGED">
  128.   <property name="closeConnection" value="false"/>
  129. </transactionManager> public Connection getConnection() throws SQLException {<transactionManager type="MANAGED">
  130.   <property name="closeConnection" value="false"/>
  131. </transactionManager><transactionManager type="MANAGED">
  132.   <property name="closeConnection" value="false"/>
  133. </transactionManager><transactionManager type="MANAGED">
  134.   <property name="closeConnection" value="false"/>
  135. </transactionManager><transactionManager type="MANAGED">
  136.   <property name="closeConnection" value="false"/>
  137. </transactionManager><transactionManager type="MANAGED">
  138.   <property name="closeConnection" value="false"/>
  139. </transactionManager>if (this.connection == null) {<transactionManager type="MANAGED">
  140.   <property name="closeConnection" value="false"/>
  141. </transactionManager><transactionManager type="MANAGED">
  142.   <property name="closeConnection" value="false"/>
  143. </transactionManager><transactionManager type="MANAGED">
  144.   <property name="closeConnection" value="false"/>
  145. </transactionManager><transactionManager type="MANAGED">
  146.   <property name="closeConnection" value="false"/>
  147. </transactionManager><transactionManager type="MANAGED">
  148.   <property name="closeConnection" value="false"/>
  149. </transactionManager><transactionManager type="MANAGED">
  150.   <property name="closeConnection" value="false"/>
  151. </transactionManager><transactionManager type="MANAGED">
  152.   <property name="closeConnection" value="false"/>
  153. </transactionManager>openConnection();<transactionManager type="MANAGED">
  154.   <property name="closeConnection" value="false"/>
  155. </transactionManager><transactionManager type="MANAGED">
  156.   <property name="closeConnection" value="false"/>
  157. </transactionManager><transactionManager type="MANAGED">
  158.   <property name="closeConnection" value="false"/>
  159. </transactionManager><transactionManager type="MANAGED">
  160.   <property name="closeConnection" value="false"/>
  161. </transactionManager><transactionManager type="MANAGED">
  162.   <property name="closeConnection" value="false"/>
  163. </transactionManager>}<transactionManager type="MANAGED">
  164.   <property name="closeConnection" value="false"/>
  165. </transactionManager><transactionManager type="MANAGED">
  166.   <property name="closeConnection" value="false"/>
  167. </transactionManager><transactionManager type="MANAGED">
  168.   <property name="closeConnection" value="false"/>
  169. </transactionManager><transactionManager type="MANAGED">
  170.   <property name="closeConnection" value="false"/>
  171. </transactionManager><transactionManager type="MANAGED">
  172.   <property name="closeConnection" value="false"/>
  173. </transactionManager>return this.connection;<transactionManager type="MANAGED">
  174.   <property name="closeConnection" value="false"/>
  175. </transactionManager><transactionManager type="MANAGED">
  176.   <property name="closeConnection" value="false"/>
  177. </transactionManager><transactionManager type="MANAGED">
  178.   <property name="closeConnection" value="false"/>
  179. </transactionManager>}<transactionManager type="MANAGED">
  180.   <property name="closeConnection" value="false"/>
  181. </transactionManager><transactionManager type="MANAGED">
  182.   <property name="closeConnection" value="false"/>
  183. </transactionManager><transactionManager type="MANAGED">
  184.   <property name="closeConnection" value="false"/>
  185. </transactionManager> public void commit() throws SQLException {<transactionManager type="MANAGED">
  186.   <property name="closeConnection" value="false"/>
  187. </transactionManager><transactionManager type="MANAGED">
  188.   <property name="closeConnection" value="false"/>
  189. </transactionManager><transactionManager type="MANAGED">
  190.   <property name="closeConnection" value="false"/>
  191. </transactionManager><transactionManager type="MANAGED">
  192.   <property name="closeConnection" value="false"/>
  193. </transactionManager><transactionManager type="MANAGED">
  194.   <property name="closeConnection" value="false"/>
  195. </transactionManager>// Does nothing<transactionManager type="MANAGED">
  196.   <property name="closeConnection" value="false"/>
  197. </transactionManager><transactionManager type="MANAGED">
  198.   <property name="closeConnection" value="false"/>
  199. </transactionManager><transactionManager type="MANAGED">
  200.   <property name="closeConnection" value="false"/>
  201. </transactionManager>}<transactionManager type="MANAGED">
  202.   <property name="closeConnection" value="false"/>
  203. </transactionManager><transactionManager type="MANAGED">
  204.   <property name="closeConnection" value="false"/>
  205. </transactionManager><transactionManager type="MANAGED">
  206.   <property name="closeConnection" value="false"/>
  207. </transactionManager> public void rollback() throws SQLException {<transactionManager type="MANAGED">
  208.   <property name="closeConnection" value="false"/>
  209. </transactionManager><transactionManager type="MANAGED">
  210.   <property name="closeConnection" value="false"/>
  211. </transactionManager><transactionManager type="MANAGED">
  212.   <property name="closeConnection" value="false"/>
  213. </transactionManager><transactionManager type="MANAGED">
  214.   <property name="closeConnection" value="false"/>
  215. </transactionManager><transactionManager type="MANAGED">
  216.   <property name="closeConnection" value="false"/>
  217. </transactionManager>// Does nothing<transactionManager type="MANAGED">
  218.   <property name="closeConnection" value="false"/>
  219. </transactionManager><transactionManager type="MANAGED">
  220.   <property name="closeConnection" value="false"/>
  221. </transactionManager><transactionManager type="MANAGED">
  222.   <property name="closeConnection" value="false"/>
  223. </transactionManager>}<transactionManager type="MANAGED">
  224.   <property name="closeConnection" value="false"/>
  225. </transactionManager><transactionManager type="MANAGED">
  226.   <property name="closeConnection" value="false"/>
  227. </transactionManager><transactionManager type="MANAGED">
  228.   <property name="closeConnection" value="false"/>
  229. </transactionManager> public void close() throws SQLException {<transactionManager type="MANAGED">
  230.   <property name="closeConnection" value="false"/>
  231. </transactionManager><transactionManager type="MANAGED">
  232.   <property name="closeConnection" value="false"/>
  233. </transactionManager><transactionManager type="MANAGED">
  234.   <property name="closeConnection" value="false"/>
  235. </transactionManager><transactionManager type="MANAGED">
  236.   <property name="closeConnection" value="false"/>
  237. </transactionManager><transactionManager type="MANAGED">
  238.   <property name="closeConnection" value="false"/>
  239. </transactionManager>if (this.closeConnection && this.connection != null) {<transactionManager type="MANAGED">
  240.   <property name="closeConnection" value="false"/>
  241. </transactionManager><transactionManager type="MANAGED">
  242.   <property name="closeConnection" value="false"/>
  243. </transactionManager><transactionManager type="MANAGED">
  244.   <property name="closeConnection" value="false"/>
  245. </transactionManager><transactionManager type="MANAGED">
  246.   <property name="closeConnection" value="false"/>
  247. </transactionManager><transactionManager type="MANAGED">
  248.   <property name="closeConnection" value="false"/>
  249. </transactionManager><transactionManager type="MANAGED">
  250.   <property name="closeConnection" value="false"/>
  251. </transactionManager><transactionManager type="MANAGED">
  252.   <property name="closeConnection" value="false"/>
  253. </transactionManager>if (log.isDebugEnabled()) {<transactionManager type="MANAGED">
  254.   <property name="closeConnection" value="false"/>
  255. </transactionManager><transactionManager type="MANAGED">
  256.   <property name="closeConnection" value="false"/>
  257. </transactionManager><transactionManager type="MANAGED">
  258.   <property name="closeConnection" value="false"/>
  259. </transactionManager><transactionManager type="MANAGED">
  260.   <property name="closeConnection" value="false"/>
  261. </transactionManager><transactionManager type="MANAGED">
  262.   <property name="closeConnection" value="false"/>
  263. </transactionManager><transactionManager type="MANAGED">
  264.   <property name="closeConnection" value="false"/>
  265. </transactionManager><transactionManager type="MANAGED">
  266.   <property name="closeConnection" value="false"/>
  267. </transactionManager><transactionManager type="MANAGED">
  268.   <property name="closeConnection" value="false"/>
  269. </transactionManager><transactionManager type="MANAGED">
  270.   <property name="closeConnection" value="false"/>
  271. </transactionManager>log.debug("Closing JDBC Connection [" + this.connection + "]");<transactionManager type="MANAGED">
  272.   <property name="closeConnection" value="false"/>
  273. </transactionManager><transactionManager type="MANAGED">
  274.   <property name="closeConnection" value="false"/>
  275. </transactionManager><transactionManager type="MANAGED">
  276.   <property name="closeConnection" value="false"/>
  277. </transactionManager><transactionManager type="MANAGED">
  278.   <property name="closeConnection" value="false"/>
  279. </transactionManager><transactionManager type="MANAGED">
  280.   <property name="closeConnection" value="false"/>
  281. </transactionManager><transactionManager type="MANAGED">
  282.   <property name="closeConnection" value="false"/>
  283. </transactionManager><transactionManager type="MANAGED">
  284.   <property name="closeConnection" value="false"/>
  285. </transactionManager>}<transactionManager type="MANAGED">
  286.   <property name="closeConnection" value="false"/>
  287. </transactionManager><transactionManager type="MANAGED">
  288.   <property name="closeConnection" value="false"/>
  289. </transactionManager><transactionManager type="MANAGED">
  290.   <property name="closeConnection" value="false"/>
  291. </transactionManager><transactionManager type="MANAGED">
  292.   <property name="closeConnection" value="false"/>
  293. </transactionManager><transactionManager type="MANAGED">
  294.   <property name="closeConnection" value="false"/>
  295. </transactionManager><transactionManager type="MANAGED">
  296.   <property name="closeConnection" value="false"/>
  297. </transactionManager><transactionManager type="MANAGED">
  298.   <property name="closeConnection" value="false"/>
  299. </transactionManager>this.connection.close();<transactionManager type="MANAGED">
  300.   <property name="closeConnection" value="false"/>
  301. </transactionManager><transactionManager type="MANAGED">
  302.   <property name="closeConnection" value="false"/>
  303. </transactionManager><transactionManager type="MANAGED">
  304.   <property name="closeConnection" value="false"/>
  305. </transactionManager><transactionManager type="MANAGED">
  306.   <property name="closeConnection" value="false"/>
  307. </transactionManager><transactionManager type="MANAGED">
  308.   <property name="closeConnection" value="false"/>
  309. </transactionManager>}<transactionManager type="MANAGED">
  310.   <property name="closeConnection" value="false"/>
  311. </transactionManager><transactionManager type="MANAGED">
  312.   <property name="closeConnection" value="false"/>
  313. </transactionManager><transactionManager type="MANAGED">
  314.   <property name="closeConnection" value="false"/>
  315. </transactionManager>}<transactionManager type="MANAGED">
  316.   <property name="closeConnection" value="false"/>
  317. </transactionManager><transactionManager type="MANAGED">
  318.   <property name="closeConnection" value="false"/>
  319. </transactionManager><transactionManager type="MANAGED">
  320.   <property name="closeConnection" value="false"/>
  321. </transactionManager> protected void openConnection() throws SQLException {<transactionManager type="MANAGED">
  322.   <property name="closeConnection" value="false"/>
  323. </transactionManager><transactionManager type="MANAGED">
  324.   <property name="closeConnection" value="false"/>
  325. </transactionManager><transactionManager type="MANAGED">
  326.   <property name="closeConnection" value="false"/>
  327. </transactionManager><transactionManager type="MANAGED">
  328.   <property name="closeConnection" value="false"/>
  329. </transactionManager><transactionManager type="MANAGED">
  330.   <property name="closeConnection" value="false"/>
  331. </transactionManager>if (log.isDebugEnabled()) {<transactionManager type="MANAGED">
  332.   <property name="closeConnection" value="false"/>
  333. </transactionManager><transactionManager type="MANAGED">
  334.   <property name="closeConnection" value="false"/>
  335. </transactionManager><transactionManager type="MANAGED">
  336.   <property name="closeConnection" value="false"/>
  337. </transactionManager><transactionManager type="MANAGED">
  338.   <property name="closeConnection" value="false"/>
  339. </transactionManager><transactionManager type="MANAGED">
  340.   <property name="closeConnection" value="false"/>
  341. </transactionManager><transactionManager type="MANAGED">
  342.   <property name="closeConnection" value="false"/>
  343. </transactionManager><transactionManager type="MANAGED">
  344.   <property name="closeConnection" value="false"/>
  345. </transactionManager>log.debug("Opening JDBC Connection");<transactionManager type="MANAGED">
  346.   <property name="closeConnection" value="false"/>
  347. </transactionManager><transactionManager type="MANAGED">
  348.   <property name="closeConnection" value="false"/>
  349. </transactionManager><transactionManager type="MANAGED">
  350.   <property name="closeConnection" value="false"/>
  351. </transactionManager><transactionManager type="MANAGED">
  352.   <property name="closeConnection" value="false"/>
  353. </transactionManager><transactionManager type="MANAGED">
  354.   <property name="closeConnection" value="false"/>
  355. </transactionManager>}<transactionManager type="MANAGED">
  356.   <property name="closeConnection" value="false"/>
  357. </transactionManager><transactionManager type="MANAGED">
  358.   <property name="closeConnection" value="false"/>
  359. </transactionManager><transactionManager type="MANAGED">
  360.   <property name="closeConnection" value="false"/>
  361. </transactionManager><transactionManager type="MANAGED">
  362.   <property name="closeConnection" value="false"/>
  363. </transactionManager><transactionManager type="MANAGED">
  364.   <property name="closeConnection" value="false"/>
  365. </transactionManager>this.connection = this.dataSource.getConnection();<transactionManager type="MANAGED">
  366.   <property name="closeConnection" value="false"/>
  367. </transactionManager><transactionManager type="MANAGED">
  368.   <property name="closeConnection" value="false"/>
  369. </transactionManager><transactionManager type="MANAGED">
  370.   <property name="closeConnection" value="false"/>
  371. </transactionManager><transactionManager type="MANAGED">
  372.   <property name="closeConnection" value="false"/>
  373. </transactionManager><transactionManager type="MANAGED">
  374.   <property name="closeConnection" value="false"/>
  375. </transactionManager>if (this.level != null) {<transactionManager type="MANAGED">
  376.   <property name="closeConnection" value="false"/>
  377. </transactionManager><transactionManager type="MANAGED">
  378.   <property name="closeConnection" value="false"/>
  379. </transactionManager><transactionManager type="MANAGED">
  380.   <property name="closeConnection" value="false"/>
  381. </transactionManager><transactionManager type="MANAGED">
  382.   <property name="closeConnection" value="false"/>
  383. </transactionManager><transactionManager type="MANAGED">
  384.   <property name="closeConnection" value="false"/>
  385. </transactionManager><transactionManager type="MANAGED">
  386.   <property name="closeConnection" value="false"/>
  387. </transactionManager><transactionManager type="MANAGED">
  388.   <property name="closeConnection" value="false"/>
  389. </transactionManager>this.connection.setTransactionIsolation(this.level.getLevel());<transactionManager type="MANAGED">
  390.   <property name="closeConnection" value="false"/>
  391. </transactionManager><transactionManager type="MANAGED">
  392.   <property name="closeConnection" value="false"/>
  393. </transactionManager><transactionManager type="MANAGED">
  394.   <property name="closeConnection" value="false"/>
  395. </transactionManager><transactionManager type="MANAGED">
  396.   <property name="closeConnection" value="false"/>
  397. </transactionManager><transactionManager type="MANAGED">
  398.   <property name="closeConnection" value="false"/>
  399. </transactionManager>}<transactionManager type="MANAGED">
  400.   <property name="closeConnection" value="false"/>
  401. </transactionManager><transactionManager type="MANAGED">
  402.   <property name="closeConnection" value="false"/>
  403. </transactionManager><transactionManager type="MANAGED">
  404.   <property name="closeConnection" value="false"/>
  405. </transactionManager>}}
复制代码
注意:如果我们使用MyBatis构建当地程序,即不是WEB程序,若将type设置成"MANAGED",那么,我们实行的任何update使用,即使我们最后实行了commit使用,数据也不会生存,不会对数据库造成任何影响。因为我们将MyBatis配置成了“MANAGED”,即MyBatis自己不管理事务,而我们又是运行的当地程序,没有事务管理功能,所以对数据库的update使用都是无效的。

免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。




欢迎光临 ToB企服应用市场:ToB评测及商务社交产业平台 (https://dis.qidao123.com/) Powered by Discuz! X3.4