本文共 1699 字,大约阅读时间需要 5 分钟。
事务管理接口,负责事务的创建,提交,回滚,三个操作
//创建事务,返回该事务的状态 TransactionStatus getTransaction(@Nullable TransactionDefinition definition) throws TransactionException; //提交事务,具体提交哪个事务,由参数status决定 void commit(TransactionStatus status) throws TransactionException; //事务回滚,滚到哪里,由参数status决定,也可以理解由 //TransactionStatus中的savepoint属性决定 void rollback(TransactionStatus status) throws TransactionException;
PlatformTransactionManager接口最重要的实现类是DataSourceTransactionManager,下面的事例使用该实现类演示事务的提交
示例1:手动提交事务,这个例子依赖于spring容器
@AutowiredDataSourceTransactionManager txpublic void aa(){ DefaultTransactionDefinition def=new DefaultTransactionDefinition(); //这个地方可以根据自己需要选择传播行为和隔离级别 def.setPropagationBehavior(TransactionDefinition.PROPAGATION_REQUIRES_NEW); TransactionStatus status=tx.getTransaction(def); try{ 自己的各种业务操作 tx.commit();//然后这里提交 }catch(Exception e){ tx.rollback(status);//报错这里回滚 }}
示例2:要想理解spring,就不应该依赖spring容器,同样是个手动提交事务,下面这个例子不再依赖spring容器
public static void main(String[] args) throws SQLException { HikariDataSource ds = new HikariDataSource(); ds.setJdbcUrl("jdbc:mysql://localhost:3306/swttest?serverTimezone=UTC&&useSSL=false"); ds.setUsername("root"); ds.setPassword("123456"); PlatformTransactionManager manager = new DataSourceTransactionManager(ds); DefaultTransactionAttribute td = new DefaultTransactionAttribute(); TransactionStatus status = manager.getTransaction(td); Map
转载地址:http://yxhws.baihongyu.com/