代码改变世界

java学习简单笔记20190312

2019-03-12 09:25  lofe  阅读(167)  评论(0编辑  收藏  举报

spring的事务机制,提供了一个PlatformTransactionManager接口,

JDBC-->DataSourceTransactionManager

JPA-->JpaTransactionManager

Hibernate-->HibernateTransactionManager

JDO-->JdoTransactionManager

分布式事务-->JtaTransactionManager

在程序中定义事务代码

@Bean

public PlatformTransactionManager tranmaager(){

JpaTransactionManager t=new JpaTransactionManager();

t.setDataSource(datasource);

return t;

}

Spring支持声名式事务,即用注解 的方式,使用@Transactional,是一个基于AOP的实现操作,是来自org.springframework.transaction.annotation包的,

提供了一个@EnableTransactionManagement来开启事务,但springboot提供了开启,所以不用自己开启。

@Transactional不仅可以注解在类上,还可以注解在方法上,spring jpa默认对所有的方法都开启了事务支持,且查询类默认启用readOnly=true,propagationtion属 性Required如果两个方法,有现成的事务则用,没有则新建事务,如果发生错误,则全部回滚,required_new,如果方法B在方法中调用,B发生错误,不会全部回滚,只有错误的方法才回滚,

一般isolation隔离使用read_commit,