Java基础之《@Transactional注解需注意事项》

@Transactional注解默认值
String value() default "";
Propagation propagation() default Propagation.REQUIRED;
Isolation isolation() default Isolation.DEFAULT;
int timeout() default TransactionDefinition.TIMEOUT_DEFAULT;
boolean readOnly() default false;

只读事务是否做无用功?
https://blog.csdn.net/yulin_ganbo/article/details/78566835

注意事项:
1、@Transactional只能被应用到public方法上,对于其它非public的方法,如果标记了@Transactional也不会报错,但方法没有事务功能
2、如果是本类加了事务的方法,调用本类另一个加了@Transactional标签的方法,事务也不会生效,因为切面是由代理类实现,代理类调用本类方法,是用this.xxx切面切不进去
3、哪些地方需要加事务:
只有查询的方法可以不加事务
只有一句增删改sql的方法,考虑数据库操作后面会不会抛异常,抛异常了要不要回滚
4、要想事务回滚你的异常要么派生自RuntimeException或者Error,或者在注解中用rollbackFor指定

猜你喜欢

转载自blog.csdn.net/csj50/article/details/82940052