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及其子類的異常時,事務會回滾;
  • 若是不加的話,出異常也不會回滾;
相關文章
相關標籤/搜索