spring 事务管理的bug

最近使用spring的@Transcational注解作事务层管理,因是spring-boot 1.3.3,因此默认开启了事务管理;spring

1. 将注解加到了类上

package com.wangge.buzmgt.customTask.server;
@Transcational
@Service
public class ImplCustomTaskServe implements CustomTaskServer {
  ---若干方法--
}

而后里面有个关于Entity实体的操做,但无需持久化;刚开始没注意,但后来发现它确实被持久化了; 这就是个bug啦; 这个功能其实并非必须的; 因此不推荐将它加在类上,也不推荐将它加在查询方法上;ide

  • 用法1:持久化对象;

###2.将注解加到方法上spring-boot

@Override
  @Transactional(rollbackForClassName="Exception")
  public void save(CustomTask customTask) throws Exception {
    try{
        --具体代码--
     } catch (Exception e) {
      log.debug(e);
      e.printStackTrace();
      throw e;
    }
  }

使用事务管理,主要是为了第二个功能:当出异常时,能进行事务回滚; 上面的例子的用法是正确的;debug

  • 用法2:事务回滚;
  • 代表当出现Exception及其子类的异常时,事务会回滚;
  • 若是不加的话,出异常也不会回滚;
相关文章
相关标签/搜索