欢迎来到天天文库
浏览记录
ID:11894229
大小:46.01 KB
页数:18页
时间:2018-07-14
《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
此文档下载收益归作者所有