快速业务通道

如何使用Eclipse CNF的Saveable Protocol实现对View的保存 - 编程入门网

作者 佚名技术 来源 NET编程 浏览 发布时间 2012-06-13
jdbcTemplate.queryForInt(      "SELECT score FROM t_user WHERE user_name =''tom''");      System.out.println("score:"+score);      jdbcTemplate.execute("DELETE FROM t_user WHERE  user_name=''tom''");    } }

Spring事务管理高级应用难点剖析,第1部分(2)

时间:2012-04-26 IBM 陈雄华

jdbcWithoutTransManager.xml 的配置文件如下所示:

清单 2. jdbcWithoutTransManager.xml

<?xml version="1.0" encoding="UTF-8" ?> <beans xmlns="http://www.springframework.org/schema/beans"      xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"      xmlns:context="http://www.springframework.org/schema/context"      xmlns:p="http://www.springframework.org/schema/p"      xsi:schemaLocation="http://www.springframework.org/schema/beans      http://www.springframework.org/schema/beans/spring-beans-3.0.xsd      http://www.springframework.org/schema/context      http://www.springframework.org/schema/context/spring-context- 3.0.xsd">    <context:component-scan base-package="user.withouttm"/>    <!-- 数据源默认将autoCommit设置为true -->    <bean id="dataSource"      class="org.apache.commons.dbcp.BasicDataSource"      destroy-method="close"      p:driverClassName="oracle.jdbc.driver.OracleDriver"      p:url="jdbc:oracle:thin:@localhost:1521:orcl"      p:username="test"      p:password="test"/>    <bean id="jdbcTemplate"      class="org.springframework.jdbc.core.JdbcTemplate"      p:dataSource-ref="dataSource"/> </beans>

运行 UserJdbcWithoutTransManagerService,在控制台上打出如下的结果:

defaultAutoCommit:true score:30

在 jdbcWithoutTransManager.xml 中,没有配置任何事务管理器,但是数据已经成功持久 化到数据库中。在默认情况下,dataSource 数据源的 autoCommit 被设置为 true ―― 这也 意谓着所有通过 JdbcTemplate 执行的语句马上提交,没有事务。如果将 dataSource 的 defaultAutoCommit 设置为 false,再次运行 UserJdbcWithoutTransManagerService,将抛出 错误,原因是新增及更改数据的操作都没有提交到数据库,所以 ④ 处的语句因无法从数据库 中查询到匹配的记录而引发异常。

对于强调读速度的应用,数据库本身可能就不支持事务,如使用 MyISAM 引擎的 MySQL 数 据库。这时,无须在 Spring 应用中配置事务管理器,因为即使配置了,也是没有实际用处的 。

不过,对于 Hibernate 来说,情况就有点复杂了。因为 Hibernate 的事务管理拥有其自身 的意义,它和 Hibernate 一级缓存有密切的关系:当我们调用 Session 的 save、update 等 方法时,Hibernate 并不直接向数据库发送 SQL 语句,而是在提交事务(commit)或 flush 一级缓存时才真正向数据库发送 SQL。所以,即使底层数据库不支持事务,Hibernate 的事务 管理也是有一定好处的,不会对数据操作的效率造成负面影响。所以,如果是使用 Hibernate 数据访问技术,没有理由不配置 HibernateTransactionManager 事务管理器。

Spring事务管理高级应用难点剖析,第1部分

凌众科技专业提供服务器租用、服务器托管、企业邮局、虚拟主机等服务,公司网站:http://www.lingzhong.cn 为了给广大客户了解更多的技术信息,本技术文章收集来源于网络,凌众科技尊重文章作者的版权,如果有涉及你的版权有必要删除你的文章,请和我们联系。以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢!

分享到: 更多

Copyright ©1999-2011 厦门凌众科技有限公司 厦门优通互联科技开发有限公司 All rights reserved

地址(ADD):厦门软件园二期望海路63号701E(东南融通旁) 邮编(ZIP):361008

电话:0592-5908028 传真:0592-5908039 咨询信箱:web@lingzhong.cn 咨询OICQ:173723134

《中华人民共和国增值电信业务经营许可证》闽B2-20100024  ICP备案:闽ICP备05037997号