问题描述:一个经典的转账问题
业务需求:数据表如下,现让tom向jerry转账100元,看一下能引发哪些问题

环境搭建:项目框架主要是spring,持久层框架暂时没用mybtis,用的是spring 的JdbcTemplate,连接池c3p0
项目结构:

applicationContext.xml文件主要配置:
<!--加载外部的properties配置文件-->
<context:property-placeholder location="classpath:jdbc.properties"></context:property-placeholder>
<!--配置元数据-->
<bean id="dataSource" class="com.mchange.v2.c3p0.ComboPooledDataSource">
<property name="driverClass" value="${jdbc.driver}"></property>
<property name="jdbcUrl" value="${jdbc.url}"></property>
<property name="user" value="${jdbc.username}"></property>
<property name="password" value="${jdbc.password}"></property>
</bean>
<bean id="jdbcTemplate" class="org.springframework.jdbc.core.JdbcTemplate">
<!--注入依赖-->
<property name="dataSource" ref="dataSource"></property>
</bean>
<bean id="accountDao" class="com.szly.dao.Impl.AccountDaoImpl">
<property name="jdbcTemplate" ref="jdbcTemplate"></property>
</bean>
<bean id="accountService" class="com.szly.service.Impl.AccountServiceImpl">
<property name="accountDao" ref=</

本文探讨了在Spring项目中使用JdbcTemplate进行手动事务控制时遇到的问题。在转账业务中,由于手动制造的异常未能导致事务回滚,导致数据不一致。分析发现,不同数据库操作使用的连接可能不同,无法确保事务的一致性。解决方案是采用Spring的声明式事务管理,将事务管理逻辑移出业务代码,提高了代码的维护性和事务处理的正确性。
最低0.47元/天 解锁文章

被折叠的 条评论
为什么被折叠?



