@Transactional 是springMVC,的事务注解
可在ApplicationConfig.java中添加注解
@Configuration //标识此类是配置文件
@EnableTransactionManagement //标识配置文件中,启用事务注解
在类中引用事务管理器
@Bean
public PlatformTransactionManager transactionManager() {
return new HibernateTransactionManager(sessionFactoryBean().getObject());
}
---------以上就能在springMVC中使用事务注解 @Transactional 了
在使用过程中碰到了@Transactional始终不起效的问题,各种尝试,个中苦闷就不说了

原来是因为我配置的注解放在了service方法中的内部方法里面了。
原来事务只能在service类中被外部调用的首层方法中才启效果
即
public void a(){
b();
}
@Transactional
public void b(){
}
此时controller中调用a方法,b中的事务是不起作用,只有直接调用b方法事务才启用。
还有就是错误捕捉的问题,只有报RuntimeException时才会回滚
除非自己在事务中添加指定抛出的错误@Transactional(rollbackFor=Exception.class)
事务才会回滚
以上。
//=============================
再次碰到事务不起作用,使用数据库为mysql
查了很多发现是数据库设置问题
mysql数据库只有Innodb引擎支持事物
MyISAM引擎不支持事务,速度快