spring事务管理
文章平均质量分 54
chongqingnantian
这个作者很懒,什么都没留下…
展开
-
一、事务的概念
一、事务的概念 可以用4个关键属性来描述事务的概念,即原子性,一致性,隔离性,以及持久性。 原子性:事务是一种原子操作,由一系列动作组成。事务的原子性确保了动作要么全部完成,要么完全不起作用。 一致性:一旦所有的事务动作完成,事务就被提交。数据和资源就处于一种满足业务规则的一致状态中。 隔离性:可能有许多事务会同时处理相同的数据,因此每个事务都应该与其他事务隔离开来,以防止数据损坏。 ...原创 2012-07-10 22:08:56 · 141 阅读 · 0 评论 -
九、同时使用jdbcTemplate和hibernate时,事务控制
<!--Hibernate TransactionManager--> <bean id="transactionManager" class="org.springframework.orm.hibernate3.HibernateTransactionManager"> <property name="sessionFactory" ref...原创 2013-01-31 11:05:48 · 893 阅读 · 0 评论 -
八、设置回滚事务属性
1、默认情况下,只有未受检查异常(如RuntimeException和Error类型的异常)会导致事务回滚,而受检查异常则不会。有时候,你可能希望打破这一规则,设置自己的异常触发事务回滚。...原创 2012-10-29 22:55:53 · 107 阅读 · 0 评论 -
七、设置隔离事务属性
1、当一个应用程序或者不同应用程序中的多个事务在同一个数据集上并发执行时,可能会出现许多意外的问题。必须指明希望事务间如何隔离。 2、并发事务所导致的问题可以分为下面3种类型 (1)脏读:对于两个事务T1和T2,T1读取了一个已经被T2更新但是还没有被提交的字段。之后,如果T2回滚,T1读取的内容就是临时且无效的。 (2)不可重复读:对于两个事务T1和T2,T1读取了一个字段,然后...原创 2012-10-28 21:04:02 · 76 阅读 · 0 评论 -
六、设置事务传播属性
1、当事务方法被另一个方法调用时,必须指定事务被如何传播。 2、事务的传播行为可以由传播(propagation)事务属性指定。这些行为是在org.springframework.transaction.TransactionDefinition接口中定义的。 (1)REQUIRED:如果有事务在运行,当前的方法就在这个事务内部运行。否则,就起启动一个新的事务,并在自己的事务内运行。 ...原创 2012-10-28 20:57:43 · 191 阅读 · 0 评论 -
五、用@Transactional注解声明式地管理事务
一、用@Transactional注解声明式地管理事务 1、用<tx:annotation-driver>元素来启用事务注解。 <tx:annotation-driver transactionManager="transactionManager"/> 事实上,如果事务管理器的名称为transactionManager,就可以在<tx:annotation-...原创 2012-07-15 16:03:31 · 77 阅读 · 0 评论 -
四、用事务通知声明式地管理事务
一、用事务通知声明式地管理事务 spring 2.x 提供了一个事务通知,你能用tx Schema中定义的<tx:advice>元素轻松的对它进行配置。 <bean class="org.springframework.jdbc.datasource.DataSourceTransactionManager" id="transactionManager"> &...原创 2012-07-15 13:49:50 · 104 阅读 · 0 评论 -
三、使用事务模板编程式地管理事务
五、使用事务模板编程式地管理事务 事务模板是在事务管理器上创建的,就像JDBC模板是在数据源上创建的一样。 事务模板执行 封装了事务代码块的 事务回调对象。 private PlatformTransactionManager transactionManager; private TransactionTemplate transactionTemplate = new Tra...原创 2012-07-10 23:37:15 · 82 阅读 · 0 评论 -
二、用事务管理器API编程式管理事务
四、用事务管理器API编程式管理事务 spring的事务管理器提供了一套独立于技术的API,你能通过getTransaction()方法启动新事务,并通过commit()和rollback()方法来管理它。 private PlatformTransactionManager transaction; TransactionDefinition def = new Defau...原创 2012-07-10 23:13:52 · 122 阅读 · 0 评论 -
十、read-only="true"
“只读事务”并不是一个强制选项,它只是一个“暗示”,提示数据库驱动程序和数据库系统,这个事务并不包含更改数据的操作,那么JDBC驱动程序和数据库就有可能根据这种情况对该事务进行一些特定的优化,比方说不安排相应的数据库锁,以减轻事务对数据库的压力,毕竟事务也是要消耗数据库的资源的。 但是你非要在“只读事务”里面修改数据,也并非不可以,只不过对于数据一致性的保护不像“读写事务”那样保险而已。 因此,“...原创 2013-02-28 11:53:45 · 123 阅读 · 0 评论