springMVC事务注解拾遗

本文详细介绍了在SpringMVC框架下如何正确使用@Transactional注解来实现事务管理,并解决了配置注解时遇到的问题,如事务只在服务类的外部调用方法生效以及错误捕捉机制。此外,文章还强调了数据库引擎类型对于事务支持的影响,特别是MySQL中InnoDB引擎的必要性。通过实例和分析,帮助开发者避免常见陷阱,确保应用的可靠性和性能。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

@Transactional 是springMVC,的事务注解

可在ApplicationConfig.java中添加注解

@Configuration  //标识此类是配置文件
@EnableTransactionManagement //标识配置文件中,启用事务注解

在类中引用事务管理器

@Bean
public PlatformTransactionManager transactionManager() {
return new HibernateTransactionManager(sessionFactoryBean().getObject());
}

---------以上就能在springMVC中使用事务注解 @Transactional 了 

在使用过程中碰到了@Transactional始终不起效的问题,各种尝试,个中苦闷就不说了尴尬

原来是因为我配置的注解放在了service方法中的内部方法里面了。

原来事务只能在service类中被外部调用的首层方法中才启效果

public void a(){

  b();

}


@Transactional

public void b(){

}

此时controller中调用a方法,b中的事务是不起作用,只有直接调用b方法事务才启用。


还有就是错误捕捉的问题,只有报RuntimeException时才会回滚

除非自己在事务中添加指定抛出的错误@Transactional(rollbackFor=Exception.class)

事务才会回滚

以上。

//=============================

再次碰到事务不起作用,使用数据库为mysql

查了很多发现是数据库设置问题

mysql数据库只有Innodb引擎支持事物

MyISAM引擎不支持事务,速度快


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值