Spring学习笔记(18)----使用Spring配置文件实现事务管理
来源:互联网 发布:阿里云ecs配置php环境 编辑:程序博客网 时间:2024/05/22 01:40
由于我们要拦截UserDAOImpl中的方法,因此我们需要在配置文件中配置信息,在配置文件中使用了AOP技术来拦截方法。
xml配置代码:
<aop:config><aop:pointcut id="transactionPointcut"expression="execution(* com.szy.spring.dao.impl..*.*(..))" /><aop:advisor advice-ref="txAdvice" pointcut-ref="transactionPointcut" /></aop:config><tx:advice id="txAdvice" transaction-manager="txManager"><tx:attributes><!-- 如果连接的方法是以get开头的方法,则不使用事务 --><tx:method name="get*" read-only="true" propagation="NOT_SUPPORTED" /><tx:method name="*" /></tx:attributes></tx:advice>
这样Spring就能对这个类进行事务管理。
下面我们测试下数据库操作是否在同一事务中执行。
假设我们的delete方法如下:
Java代码
public void delete(int id) { jdbcTemplate.update("delete from users where id=?", new Object[]{id}, new int[]{java.sql.Types.INTEGER}); jdbcTemplate.update("delete from users1 where id=10"); }在第二条删除语句中,users1表是不存在的,如果两次update语句是在两个事务中执行,则第一条能成功执行,并且数据库中该id的记录已经被删除,
而第二条由于不存在该表不能正常删除。如果在同一事务中执行,由于第二条update出错,数据库中不能删除任何记录。
测试代码:
Java代码
@Test public void testDelete() { userDAO.delete(5); }
程序报错,同时id=5的记录没有被删除。如果我们把配置文件中关于事务配置的信息给注释掉,再次测试,程序同样报错,但是id=5的记录被成功删除掉,
这说明这两条update语句是在两个不同的事务中运行。
PS:在平时开发中,Spring团队建议使用注解的方式进行配置,这样配置文件显得精简,同时也会做到精确控制。
0 0
- Spring学习笔记(18)----使用Spring配置文件实现事务管理
- Spring学习笔记(18)----使用Spring配置文件实现事务管理
- Spring学习笔记(16)----使用Spring配置文件实现事务管理
- 使用Spring配置文件实现事务管理
- 使用Spring配置文件实现事务管理
- Spring事务管理学习笔记
- Spring学习笔记----事务管理
- Spring事务管理学习笔记
- Spring学习笔记 事务管理
- Spring学习笔记(16)----使用Spring配置文件实现AOP
- spring学习笔记:spring事务管理
- spring学习笔记:spring事务管理
- spring学习笔记:spring事务管理
- spring学习(十)—事务管理(配置文件方式实现)
- Spring 的事务管理学习笔记
- Spring框架学习笔记----事务管理
- Spring 学习笔记之事务管理
- spring mvc+hibernate 实现事务管理(配置文件版)
- 修改ubuntu 的命令提示符
- iOS开发日记23-Xcode生成API文档(HeaderDoc)
- [算法学习]顺时针打印矩阵
- 在sdwebimage中加载webp格式图片。
- GCD之串行队列和并行队列及dispatch_group
- Spring学习笔记(18)----使用Spring配置文件实现事务管理
- linux 学习第一天
- cordova入门
- [算法学习]整数序列的奇偶分类
- 尾插法建链表
- Hibernate之Session增删改查操作
- 下载Android源码
- [算法学习]Java实现字符序列全组合
- PCA、LDA的参考学习、理解、混乱、清晰的过程