天天看點

springMVC事務注解拾遺

@Transactional 是springMVC,的事務注解

可在ApplicationConfig.java中添加注解

@Configuration  //辨別此類是配置檔案

@EnableTransactionManagement //辨別配置檔案中,啟用事務注解

在類中引用事務管理器

@Bean

public PlatformTransactionManager transactionManager() {

return new HibernateTransactionManager(sessionFactoryBean().getObject());

}

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

在使用過程中碰到了@Transactional始終不起效的問題,各種嘗試,個中苦悶就不說了

springMVC事務注解拾遺

原來是因為我配置的注解放在了service方法中的内部方法裡面了。

原來事務隻能在service類中被外部調用的首層方法中才啟效果

public void a(){

  b();

}

@Transactional

public void b(){

}

此時controller中調用a方法,b中的事務是不起作用,隻有直接調用b方法事務才啟用。

還有就是錯誤捕捉的問題,隻有報RuntimeException時才會復原

除非自己在事務中添加指定抛出的錯誤@Transactional(rollbackFor=Exception.class)

事務才會復原

以上。

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

再次碰到事務不起作用,使用資料庫為mysql

查了很多發現是資料庫設定問題

mysql資料庫隻有Innodb引擎支援事物

MyISAM引擎不支援事務,速度快