Spring的事务管理机制

    事务就是对一系列的数据库操作(比如插入多条数据)进行统一的提交或回滚操作,如果插入成功,那么一起成功,如果中间有一条出现异常,那么回滚之前的所有操作。这样可以防止出现脏数据,防止数据库数据出现问题。开发中为了避免这种情况一般都会进行事务管理。

JDBC中是通过Connection对象进行事务管理的,默认是自动提交事务,可以手工将自动提交关闭,通过commit方法进行提交,rollback方法进行回滚,如果不提交,则数据不会真正的插入到数据库中。

Hibernate中是通过Transaction进行事务管理,处理方法与JDBC中类似,是在DAO层进行事务管理的

Spring中也有自己的事务管理机制,一般是使用TransactionMananger进行管理,可以通过Spring的注入来完成此功能。

所以在SSH中,我们一般用Hibernate的事务管理方式也可以选择用Spring来进行事务管理。但是我个人认为,从逻辑上来讲,用Spring管理模式会更加好,在Service层,我们每一个业务其实才是真正的一个事务,里面可能调用多个Dao类,对多个数据库多种操作同时进行,那么在这里进行事务管理就表示,要成功大家一起成功,失败大家一起失败。更符合我们认为的AOP编程的思想。

 

spring配置文件的写法

<!-- Transaction Manager -->
 <bean id="transactionManager" class="org.springframework.orm.hibernate3.HibernateTransactionManager">
  <property name="sessionFactory">
   <ref local="sessionFactory"/>
  </property>
 </bean>
 
 <!--  Base Transaction Proxy -->
 <bean id="baseTxProxy" class="org.springframework.transaction.interceptor.TransactionProxyFactoryBean" abstract="true">
  <property name="transactionManager">
   <ref local="transactionManager"/>
  </property>
  <property name="transactionAttributes">
   <props>
    <prop key="*">PROPAGATION_REQUIRED</prop>
    <prop key="save*">PROPAGATION_REQUIRED</prop>
    <prop key="load*">PROPAGATION_REQUIRED,readOnly</prop>
    <prop key="get*">PROPAGATION_REQUIRED,readOnly</prop>
    <prop key="find*">PROPAGATION_REQUIRED,readOnly</prop>
   </props>
  </property>
 </bean>


 

service的写法

 <!-- Service 的管理 -->
   <bean id="loginoutService"  parent="baseTxProxy">
		<property name="target">
			<bean class="org.hstaoshu.service.LoginoutService">
				<property name="loginoutDAO" ref="loginoutDAO" />
				<property name="adminDAO" ref="adminDAO" />
			</bean>
		</property>
	</bean>


 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值