100字范文,内容丰富有趣,生活中的好帮手!
100字范文 > Spring学习总结(33)—— 用 Spring 的 @Transactional 注解控制事务有哪些不生效的场景?

Spring学习总结(33)—— 用 Spring 的 @Transactional 注解控制事务有哪些不生效的场景?

时间:2018-10-30 19:58:16

相关推荐

Spring学习总结(33)—— 用 Spring 的 @Transactional 注解控制事务有哪些不生效的场景?

数据库引擎不支持事务

这里以 MySQL 为例,其 MyISAM 引擎是不支持事务操作的,InnoDB 才是支持事务的引擎,一般要支持事务都会使用 InnoDB。根据 MySQL 的官方文档:

/doc/refman/5.5/en/storage-engine-setting.html

从 MySQL 5.5.5 开始的默认存储引擎是:InnoDB,之前默认的都是:MyISAM,所以这点要值得注意,底层引擎不支持事务再怎么搞都是白搭。

没有被 Spring 管理

如下面例子所示:

//@ServicepublicclassOrderServiceImplimplementsOrderService{@TransactionalpublicvoidupdateOrder(Orderorder){//updateorder}}

如果此时把 @Service 注解注释掉,这个类就不会被加载成一个 Bean,那这个类就不会被 Spring 管理了,事务自然就失效了。

方法不是 public 的

以下来自 Spring 官方文档:

When using proxies, you should apply the @Transactional annotation only to methods with public visibility. If you do annotate prot

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。