事务处理

JDBC的事务处理

瘦欲@ 提交于 2019-12-26 00:17:06
JDBC的事务处理 事务,也是数据库事务,指的是作为单个逻辑工作单元执行的一系列操作。正常的情况下,操作应该顺利进行,与操作相关的所有数据库信息也成功地更新; 但是,如果在这一系列过程中任何一个环节出了差错,导致操作失败了,数据库中所有信息都必须保持操作前的状态不变。否则,数据库的信息将会一片混乱而不可预测。 一个逻辑工作单元要称为事务,必须满足ACID(原子性,一致性,隔离性和持久性): http://baike.baidu.com/view/600227.htm 事务的结束只能有两种形式:提交和回滚。操作完全成功则提交,产生永久性的修改;操作不完全成功则回滚,恢复到事务开始前的状态。它们将结束一个事务。 (1)关闭自动提交事务。通过设置连接的自动提交事务属性为false,如下: ? Connection conn = DriverManager.getConnection( "连接URL" , "用户名" , "密码" ); //关闭自动提交事务 conn.setAutoCommit( false ); (2)如果执行顺利,提交事务;一旦发生异常,回滚(rollback)事务,如下: ? try { conn.setAutoCommit( false ); //关闭自动提交事务 stmt = conn.createStatement(); //创建会话 stmt

DB----事务处理 PHP

…衆ロ難τιáo~ 提交于 2019-12-24 07:43:16
PHP 模式 $link = mysql_connect ( "localhost" , "root" , "" ) ; mysql_query ( "set names utf8" ) ; $sql = "start transaction;" #开启一个事务 mysql _query ( $sql ) ; $sql1 = "update t1 set money = money - 5000 where uid='001'" $result1 = mysql_query ( $sql1 ) ; $sql2 = "update t1 set money = money + 5000 where uid='002'" $result2 = mysql_query ( $sql2 ) ; // 根据结果判断提交或回滚 if ( $result1 && $result2 ) { mysql_query ( "commit;" ) ; echo "事务执行成功" ; } else { msyql_query ( "rollback;" ) ; echo "事务执行失败" ; } 来源: CSDN 作者: damys 链接: https://blog.csdn.net/damys/article/details/103641202

Java事务处理总结

左心房为你撑大大i 提交于 2019-12-18 20:09:44
http://lavasoft.blog.51cto.com/62575/53815/ 一、什么是Java事务 通常的观念认为,事务仅与数据库相关。 事务必须服从ISO/IEC所制定的ACID原则。ACID是原子性(atomicity)、一致性(consistency)、隔离性(isolation)和持久性(durability)的缩写。事务的原子性表示事务执行过程中的任何失败都将导致事务所做的任何修改失效。一致性表示当事务执行失败时,所有被该事务影响的数据都应该恢复到事务执行前的状态。隔离性表示在事务执行过程中对数据的修改,在事务提交之前对其他事务不可见。持久性表示已提交的数据在事务执行失败时,数据的状态都应该正确。 通俗的理解,事务是一组原子操作单元,从数据库角度说,就是一组SQL指令,要么全部执行成功,若因为某个原因其中一条指令执行有错误,则撤销先前执行过的所有指令。更简答的说就是:要么全部执行成功,要么撤销不执行。 既然事务的概念从数据库而来,那Java事务是什么?之间有什么联系? 实际上,一个Java应用系统,如果要操作数据库,则通过JDBC来实现的。增加、修改、删除都是通过相应方法间接来实现的,事务的控制也相应转移到Java程序代码中。因此,数据库操作的事务习惯上就称为Java事务。 二、为什么需要事务 事务是为解决数据安全操作提出的

SQL SERVER 事务处理

别来无恙 提交于 2019-12-16 18:24:17
<1>.事务的概念 事务是一个不可分割的工作逻辑单元。 <2>.为什么使用事物 可以防止错误的发生。 <3>.事物的作用 要么所有的操作全部完成,要么所有操作都不执行。 <4>.什么是事物 事务是单个的工作单元 如果某一事务成功,则在该事务中进行的所有的数据更改均会提交,称为数据库中的永久组成部分。 如果事务遇到错误且必须取消或回滚,则所有数据更改均被清楚。 <5>.事务的特性 事务必须具备以下四个属性,简称ACID 属性: (1). 原子性(Atomicity):事务是一个完整的操作。事务的各步操作是不可分的(原子的);要么都执行,要么都不执行。 (2). 一致性(Consistency):当事务完成时,数据必须处于一致状态。 (3). 隔离性(Isolation):对数据进行修改的所有并发事务是彼此隔离的,这表明事务必须是独立的,它不应以任何方式依赖于或影响其他事务。 (4). 永久性(Durability):事务完成后,它对数据库的修改被永久保持,事务日志能够保持事务的永久性。 <6>.如何创建事务 1. T-SQL使用下列语句来管理事务: (1). 开始事务:BEGIN TRANSACTION (2). 提交事务:COMMIT TRANSACTION (3). 回滚(撤销)事务:ROLLBACK TRANSACTION 2. 一旦事务提交或回滚,则事务结束。 (1).

laravel 事务处理逻辑

浪尽此生 提交于 2019-12-13 07:06:48
前言: 在操作数据库中,实现一个功能时有时候会多次操作数据库, 在多次操作数据库时,就会有可能出现其中一条sql语句执行成功,而另一条sql语句执行失败。 这样的话就会出现很严重的问题,所以可以用MySQL的事务处理来解决这个问题。 !!:在处理多表操作的时候一般是需要用到事务处理的! //1、开启事务 DB::beginTransaction(); try{ //2、执行成功时提交事务 DB::commit(); }catch(\Exception $exception){ //3、执行成失败时回滚 DB::rollBack(); } 注意: 其中要注意一点的是,catch里面的抛出异常,Exception前面要加上一个‘\’,不然的话在框架里面他会找不到这个类,然后就不会抛出异常。框架就会直接报错,起不到事务的作用。 //用户注册demo <?php namespace App\Http\Controllers\Api; use App\Http\Controllers\Controller; use Illuminate\Support\Facades\DB; use Illuminate\Support\Facades\Hash; class LoginController extends Controller { public function register

多线程事务处理问题

南笙酒味 提交于 2019-12-12 19:32:14
代码 EquipCollectServiceImpl.java protected static final ExecutorService handleTaskPoolExecutor = Executors.newFixedThreadPool(3); public void queryDataToUpload(){ // 查询待上传信息 List list = equipCollectDao.queryDataByParams(); // 多线程 调用上传接口 handleTaskPoolExecutor.submit( @Override new Runnable(){ public void run(){ // ... 接口调用 ... Json backInfo = {..}; // 保存接口日志(方式 1) -> 报错 interfaceDao.insertInterfaceBackLog(backInfo); // 保存接口日志(方式 2) -> 2.1报错 2.2成功 saveInterfaceBackLog(backInfo); // 保存接口日志(方式 3) -> 成功 interfaceService.insertInterfaceBackLog(backInfo); } } ); } @Transactional public void

SpringBoot事务处理总结

為{幸葍}努か 提交于 2019-12-11 04:28:57
Spring boot是默认启动事务的,只需要在类或者方法上添加@Transactional注解即可,但有时候会发现事务不生效,具体原因可以从以下几个方面找寻: 1、 首先要看数据库引擎是否支持注解,mysql默认引擎INNODB是支持的 , 但MYISAM是不支持的 ; 2、 注解只能被应用到public方法上, 其它方法上不会报错,但不生效; 3、 默认情况下只会对运行期异常(java.lang.RuntimeException及其子类)和 Error 进行回滚 ; 4、 如果是其它异常,可以显形标记在参数里,下图标红的就是先进行查看用户有指定的异常,如果没有,就默认上一条的异常,参数格式:@Transactional(rollbackFor={Exception.class}) 5、 是否进行了异常捕获,如果使用了try–catch,事务是肯定不生效,也就是系统没有接收到异常场景; 关于使用异常捕获,还想事务生效,可以有几种策略解决相关难题: 5.1、手动回滚 5.2、在catch里抛出一个runntimeException 5.3、将异常写入注解参数里面,也需要抛出来,原理跟方法2一样的,只是重新指定了事务回滚的异常类型 隔离级别 . Mysql默认采用 REPEATABLE_READ 隔离级别 Oracle默认采用 READ_COMMITTED 隔离级别 来源: CSDN

制造业项目概念

这一生的挚爱 提交于 2019-12-06 11:46:33
由于最近入职了一家新公司,接触到了一些比较新的东西,新的概念,记录下: MoM (Manager of Managers) 模式,即管理人的管理人基金模式,也被称为精选多元管理人,通过优中选优的方法,筛选基金管理人 或资产管理人,让这些最顶尖的专业人士来管理资产,而自身则通过动态地跟踪、监督、管理他们,及时调整资产配置方案,来收获利益。 简而言之,MoM是找最优秀的投顾组成团队、分配资金、操盘投资,既发挥团队力量,又不限制个人风格。MoM模式是一种较为新兴的 资产管理策略,始于上个世纪80年代,美国罗素是MoM的创始机构。 MES [manufacturing execution system](制造企业生产过程执行管理系统) MES系统是一套面向制造企业车间执行层的生产信息化管理系统。MES可以为企业提供包括制造数据管理、计划排程管理、生产调度管理、 库存管理、质量管理、人力资源管理、工作中心/设备管理、工具工装管理、采购管理、成本管理、项目看板管理、生产过程控制、 底层数据集成分析、上层数据集成分解等管理模块,为企业打造一个扎实、可靠、全面、可行的制造协同管理平台。 APS[Advanced Planning and Scheduling](高级计划与排程) 是对所有资源具有同步的,实时的,具有约束能力的,模拟能力,不论是物料,机器设备,人员,供应,客户需求,运输等影响计划因素

Spring事务处理机制之RuntimeException()和Exception()区别

混江龙づ霸主 提交于 2019-12-06 00:42:13
RuntimeException()和Exception()区别: 1.继承自RuntimeException或error的是非检查型异常,而继承自exception的则是检查型异常(当然,runtimeexception本身也是exception的子类)。 2.对非检查型类异常可以不用捕获,而检查型异常则必须用try语句块进行处理或者把异常交给上级方法处理总之就是必须写代码处理它。所以必须在service捕获异常,然后再次抛出,这样事务方才起效。 Spring事务默认只在发生未被捕获的RuntimeException()时才进行回滚。 Spring通过SpringAOP进行声明式事务管理:   SpringAOP异常捕获的原理:被拦截的方法需显式抛出异常,并不能经任何处理,这样aop代理才能捕获到方法的异常,才能进行回滚, 默认情况下SpringAOP只捕获RuntimeException的异常,因此不是RuntimeException或其子类的异常不能够捕获,默认情况下不进行回滚, 但可以通过配置来捕获特定的异常并回滚 。 因此: 方法1: 在service层不使用try......catch或者在catch中最后加上throw new RuntimeException(),这样程序异常时aop才可以捕获异常并进行回滚。 最终在service上层(如controller层

以事务处理数据库

旧城冷巷雨未停 提交于 2019-12-05 23:15:42
bool res = true; using (var db = DAL.DbBaseFactory.OpenConnection()) { IDbTransaction tran = db.DbTransaction; try { //res &= XXBLL.aaManager.Add(aa, tran); //res &= XXBLL.bbManager.UpdateTs(bb, tran); tran.Commit(); } catch (Exception ex) { tran.Rollback(); throw ex; } finally { tran.Dispose(); db.Dispose(); } } return res; 来源: https://www.cnblogs.com/mol1995/p/11949962.html