spring 事务管理高级应用难点剖析

spring 事务管理高级应用难点剖析

ID:11894229

大小:46.01 KB

页数:18页

时间:2018-07-14

spring 事务管理高级应用难点剖析_第1页
spring 事务管理高级应用难点剖析_第2页
spring 事务管理高级应用难点剖析_第3页
spring 事务管理高级应用难点剖析_第4页
spring 事务管理高级应用难点剖析_第5页
资源描述:

《spring 事务管理高级应用难点剖析》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库

1、Spring事务管理高级应用难点剖析概述Spring最成功,最吸引人的地方莫过于轻量级的声明式事务管理,仅此一点,它就宣告了重量级EJB容器的覆灭。Spring声明式事务管理将开发者从繁复的事务管理代码中解脱出来,专注于业务逻辑的开发上,这是一件可以被拿来顶礼膜拜的事情。但是,世界并未从此消停,开发人员需要面对的是层出不穷的应用场景,这些场景往往逾越了普通Spring技术书籍的理想界定。因此,随着应用开发的深入,在使用经过Spring层层封装的声明式事务时,开发人员越来越觉得自己坠入了迷雾,陷入了沼泽,体会不到外界所宣称的那种畅快淋漓。本系列

2、文章的目标旨在整理并剖析实际应用中种种让我们迷茫的场景,让阳光照进云遮雾障的山头。DAO和事务管理的牵绊很少有使用Spring但不使用Spring事务管理器的应用,因此常常有人会问:是否用了Spring,就一定要用Spring事务管理器,否则就无法进行数据的持久化操作呢?事务管理器和DAO是什么关系呢?也许是DAO和事务管理如影随行的缘故吧,这个看似简单的问题实实在在地存在着,从初学者心中涌出,萦绕在开发老手的脑际。答案当然是否定的!我们都知道:事务管理是保证数据操作的事务性(即原子性、一致性、隔离性、持久性,也即所谓的ACID),脱离了事务

3、性,DAO照样可以顺利地进行数据的操作。下面,我们来看一段使用SpringJDBC进行数据访问的代码:清单1.UserJdbcWithoutTransManagerService.javapackageuser.withouttm;importorg.springframework.beans.factory.annotation.Autowired;importorg.springframework.jdbc.core.JdbcTemplate;importorg.springframework.stereotype.Service;imp

4、ortorg.springframework.context.ApplicationContext;importorg.springframework.context.support.ClassPathXmlApplicationContext;importorg.apache.commons.dbcp.BasicDataSource;@Service("service1")publicclassUserJdbcWithoutTransManagerService{  @Autowired  privateJdbcTemplatejdbcTe

5、mplate;  publicvoidaddScore(StringuserName,inttoAdd){    Stringsql="UPDATEt_useruSETu.score=u.score+?WHEREuser_name=?";    jdbcTemplate.update(sql,toAdd,userName);  }  publicstaticvoidmain(String[]args){    ApplicationContextctx=     newClassPathXmlApplicationContext("user/

6、withouttm/jdbcWithoutTransManager.xml");    UserJdbcWithoutTransManagerServiceservice=       (UserJdbcWithoutTransManagerService)ctx.getBean("service1");    JdbcTemplatejdbcTemplate=(JdbcTemplate)ctx.getBean("jdbcTemplate");    BasicDataSourcebasicDataSource=(BasicDataSourc

7、e)jdbcTemplate.getDataSource();    //①.检查数据源autoCommit的设置    System.out.println("autoCommit:"+basicDataSource.getDefaultAutoCommit());    //②.插入一条记录,初始分数为10    jdbcTemplate.execute(    "INSERTINTOt_user(user_name,password,score)VALUES('tom','123456',10)");    //③.调用工作在无事务环境

8、下的服务类方法,将分数添加20分    service.addScore("tom",20);     //④.查看此时用户的分数    intscore=jdbc

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。