事务

    科技2026-03-06  6

    事务

    2、申明式事务(开发)(续)3、spring基于注解的事务管理

    2、申明式事务(开发)(续)

    第1步:业务的层的哪些方法需要事务(黑客)。 UserInfoServiceImpl1.zz(int from ,int to ,int money);

    @Override public void zz(int from, int to, int money) { transactionTemplate.execute(new TransactionCallbackWithoutResult() { protected void doInTransactionWithoutResult(TransactionStatus status) { try { //转账的操作 zzOptional(from, to, money); System.out.println("转账成功"); } catch (Exception ex) { System.out.println("转账失败,进行回滚"); status.setRollbackOnly(); } } }); }

    第2步:xml中配置事务管理器 (不同的orm框架 事务管理的方式不同) (orm框架:mybatis,hibernate,jpa,jdbcTemplate…)

    <bean id="txTransaction" class="org.springframework.jdbc.datasource.DataSourceTransactionManager "> <property name="dataSource" ref="dataSource"/> </bean>

    第3步:xml配置中定义切面

    <!-- 1.切面 --> <tx:advice id="ndAdvice" transaction-manager="txTransaction"> <tx:attributes> <!-- 哪个方法需要使用什么事务:哪个屁眼需要插入黑板刷 zz*:所有以zz开始的方法名的所有方法 *zz: 所有以zz结束的方法名的所有方法 --> <tx:method name="zz*" /> <!-- * 其他方法使用默认事务 事务是只读的,就表名事务内不能对数据进行更新。--> <tx:method name="*" read-only="true"/> </tx:attributes> </tx:advice>

    第4步:xml配置根据切点+增强 ,自动生成业务方法的代理对象

    3、spring基于注解的事务管理

    第1步: 启用注解事务 <tx:annotation-driven transaction-manager="transactionManager"/> 第2步:使用@Transactional标示需要事务的方法 第3步:测试
    Processed: 0.008, SQL: 9