2 linshenyuan1213 linshenyuan1213 于 2013.08.16 23:39 提问

求教spring jdbc 编程式事务 与申明式事务 死锁如何解决?

当前场景是这样的:
有个线程1 使用编程式事务进行数据库操作,设计到多个数据库操作语句(编程式事务就是声明式事务糅合到一起)。
有个线程2 使用声明式事务进行数据库操作。

如果 线程1 开始事务begin后,删除表A的数据a, (中间时间C中,做了一些其他等待操作 ),事务才提交commit
线程2 刚好在时间C中,欲对数据a进行修改。

这个时候就会出现死锁。

请问这种方式有没有解决方法?
1. 事务操作弄成串型化可以解决这个方法,但可能性能不足。

Csdn user default icon
上传中...
上传图片
插入图片
准确详细的回答,更有利于被提问者采纳,从而获得C币。复制、灌水、广告等回答会被删除,是时候展现真正的技术了!
其他相关推荐
事务声明声明式事务和编程式事务介绍
编程式事务:所谓编程式事务指的是通过编码方式实现事务,即类似于JDBC编程实现事务管理。管理使用TransactionTemplate或者直接使用底层的PlatformTransactionManager。对于编程式事务管理,spring推荐使用TransactionTemplate。 声明式事务 :管理建立在AOP之上的。其本质是对方法前后进行拦截,然后在目标方法开始之前创建或者加入一个事务
spring事务管理(声明式事务和编程式事务)
spring的事务管理分为:声明式事务和编程式事务 spring对事务管理通常分为三部分:DataSource、TransactionManager和代理机制这三部分,无论哪种配置方式,一般变化的只是代理机制这部分。 1.spring数据源配置 * 方式1:直接在spring的配置文件(applicationContext.xml)中配置数据源
Spring编程式事务管理和声明式事务管理 案例
转账案例使用了Spring事务管理,用两种方式实现:编程式事务管理和声明式事物管理。    其中,编程式事务管理是一种手动修改代码的方式,比较麻烦,在开发过程中很少使用;声明式事务管理有三种方法实现,分别是TransactionProxyFactoryBean的代理方式、基于AspectJ的xml配置方式和基于注解的声明方式,后两种在开发应用中常常出现。
Spring事务处理-编程式事务和声明式事务
Spring框架提供编程式事务处理和声明式事务处理。编程式事务处理就是指在业务代码中利用Spring框架提供的一些类进行事务处理。声明式事务处理就是指在xml配置文件或注解的方式声明对某个类方法进行事务处理。通过以上的描述可以大概知道编程式事务处理是以侵入的方式完成,代码的耦合度高一些。而声明式事务处理耦合度低,或者说基本没有耦合。编程式事务管理是基于Spring框架底层的 API来完成的,在Sp...
Spring的四种事务管理(一种编程式事务+三种声明事务)<学习随笔>
Spring的4种事务管理(1种编程式事务+三种声明事务) 一、Spring事务的介绍 二、编程式事务xml的配置 注入后直接在service层调用模板的方法使用 三、基于AOP方式的声明式事务管理 prop的具体配置 使用AOP声明式事务是时service层必须注入代理类 四、基于Asp
Spring事务管理实现方式之编程式事务与声明式事务详解
1.编程式事务:编码方式实现事务管理(代码演示为JDBC事务管理) Spring实现编程式事务,依赖于2大类,分别是上篇文章提到的PlatformTransactionManager,与模版类TransactionTemplate(推荐使用)。下面分别详细介绍Spring是如何通过该类实现事务管 2.声明式事务:可知编程式事务每次实现都要单独实现,但业务量大功能复杂时,使用编程式事务无疑是痛苦的,而声明式事务不同,声明式事务属于无侵入式,不会影响业务逻辑的实现。
spring+mybatis事务管理(声明式+编码式)
spring事务 声明式+编码式
Spring的编程式事务与声明式事务区别
编程式事务需要你在代码中直接加入处理事务的逻辑,可能需要在代码中显式调用beginTransaction()、commit()、rollback()等事务管理相关的方法,如在执行a方法时候需要事务处理,你需要在a方法开始时候开启事务,处理完后。在方法结束时候,关闭事务. 声明式的事务的做法是在a方法外围添加注解或者直接在配置文件中定义,a方法需要事务处理,在spring中会通过配置文件在a方
编程式事务 与 声明式事务
采用声明式事务1、了解事务的传播特性 1、propagation_required:如果当前存在一个事务,则支持当前事务,如果没有事务则开启事务 2、propagation_supports:如果存在一个事务,则支持当前事务,如果没有事务则非事务执行 3、propagation_mandatory:如果存在一个事务,则支持当前事务,如果没有事务则抛出异常 4、propagation_requi
编程式事务与声明式事务
采用编程式事务 1、 getCurrentSession()与openSession()的区别? * 采用getCurrentSession()创建的session会绑定到当前线程中,而采用openSession()创建的session则不会 * 采用getCurrentSession()创建的session在commit或rollback时会自动关闭,而采用openSessio