Spring中的事务管理

来源:互联网 发布:淘宝网单管巴乌价格 编辑:程序博客网 时间:2024/05/21 11:13

1.1 理解事务

      假设要去买一张电影票。买电影票这件事,涉及以下几个行为:

  •   检查空余座位的数量,以便核实有足够的座位供你购买。
  •   每卖出一张票,空余座位的数量就减少一个。
  •   你为电影票付款。
  •   将电影票发给你。

      如果一切正常的话,你便将可以享受一部大片的乐趣,而电影院则将多几美元的收入。但是,如果有些环节出错了呢?例如,如果你使用一张已经达到限额的信用卡来支付,结果会怎么样呢?当然了,你不会拿到电影票,电影院也收不到你的钱。但是,如果座位的数量没有被复位到这次购买之前的那个数量,那么这场电影就可能会被人为地耗尽座位(从而损失销售额)。再或者,如果其他每一件事情都运行正常,但就是电影票发不出来。那么你将损失几美元,并且只能待在家里通过有线电视观看重新放映的影片了。

      为保证不管是你还是电影院都不收损失,上述行为都应该被打包在一个事务里。作为一个事务,他们将被视作一个单一的行为,保证它们要么都完全成功,要么全部都被回滚,好像什么都没有发生过。

1.2 4个词解释事务。

   ACID

  •   原子性(Atomic)
  •   一致性(Consistent)
  •   隔离性(isolated)
  •   持久性(Durable)

1.3 JDBC事务

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


1.4 Hibernate事务

           <bean id="transactionManager" class="org.springframework.orm.hibernate.HibernateTransactionManager">           <!--            Hibernate 3.x             <bean id="transactionManager" class="org.springframework.orm.hibernate3.HibernateTransactionManager">           -->           <property name="sessionFactory" ref="sessionFactory"/>           </bean>


1.5 JPA事务

         <bean id="transactionManager" class="org.springframework.orm.jpa.JpaTransactionManager"><property name="entityManagerFactory" ref="entityManagerFactory" /></bean>


1.6 JDO事务

              使用JdoTransactionManager,需要将一个javax.jdo.PersistenceManagerFactory实例装配到persistenceManagerFactory属性中。

             在幕后,JdoTransactionManager和那个从JDO持久性管理器中检索到的事务对象一起工作,在事务成功结束后调用commit(),在事务失败后调用rollback()。

         <bean id="transactionManager" class="org.springframework.orm.jdo.JdoTransactionManager"><property name="persistenceManagerFactory" ref="persistenceManagerFactory"></property></bean>
原创粉丝点击