Spring对jdbc的事务管理——基于XML配置

jdbc操作数据库的时候,完成一个需求,可能需要多个其他服务一起完成后,才算完成。在这个过程中,就会产生服务是否全都成功了的问题,最直接的后果,会对我们的数据产生影响。比如A转100元给B,A的账户要减掉100,B的账户要加100,这是两个操作,如果只成功了一个,就会产生数据不准的问题,而事务管理简单说就是两个操作都成功算成功,如果其中一个操作失败,就将已经成功了的操作回滚,这样就保证了数据的正确性。

具体步骤:

1.书写操作的各类(举例说明了)

2、xml的配置

<!--配置数据源-->
<bean id="dataSource" class="com.mchange.v2.c3p0.ComboPooledDataSource">
		<property name="user" value="${jdbc.user}"></property>
		<property name="password" value="${jdbc.password}"></property>
		<property name="jdbcUrl" value="${jdbc.jdbcUrl}"></property>
		<property name="driverClass" value="${jdbc.driverClass}"></property>
		<property name="minPoolSize" value="${jdbc.maxPoolSize}"></property>
		<property name="initialPoolSize" value="${jdbc.initPoolSize}"></property>
	</bean>
<!--配置各种bean-->
	<bean id="bookDao" class="BookDao">
		<property name="jdbcTemplate" ref="jdbcTemplate"></property>
	</bean>
	<bean id="accountDao" class="AccountDao">
		<property name="jdbcTemplate" ref="jdbcTemplate"></property>
	</bean>
	<bean id="bookService" class="BookService">
		<property name="bookDao" ref="bookDao"></property>
		<property name="accountDao" ref="accountDao"></property>
	</bean>
	<bean id="cashierImpl" class="CashierImpl">
		<property name="bookService" ref="bookService"></property>
	</bean>
	<!-- 配置spring的template -->
	<bean id="jdbcTemplate" class="org.springframework.jdbc.core.JdbcTemplate">
		<property name="dataSource" ref="dataSource"></property>
	</bean>
	<!-- 配置事务管理器 -->
	<bean id="transactionManager" class="org.springframework.jdbc.datasource.DataSourceTransactionManager">
		<property name="dataSource" ref="dataSource"></property>
	</bean>
	<!-- 配置事务属性 -->
	<tx:advice id="txAdvice" transaction-manager="transactionManager">
		<tx:attributes>
               <!-- 配置事务的传播行为 -->
			<tx:method name="buybooks" propagation="REQUIRED" />
			<tx:method name="*"/>
		</tx:attributes>
	</tx:advice>
	<!-- 配置事务切入点,并关联事务属性 -->
	<aop:config>
		<aop:pointcut expression="execution(* spring.jdbc.dao.xml.*.*(..))" id="txPointCut"/>
		<aop:advisor advice-ref="txAdvice" pointcut-ref="txPointCut"/>
	</aop:config>

在事务属性里处理可以配置事务的传播行为,还可以配置事务的其他具体行为。

这是自己在学习的时候记点笔记,如有错误,请指正,谢谢。

发布了14 篇原创文章 · 获赞 0 · 访问量 4178

猜你喜欢

转载自blog.csdn.net/sky892012/article/details/104438816
今日推荐