ibatis源码浅析- 事务

神经算子:突破科学计算瓶颈的函数空间映射技术 神经算子(Neural Operators)是深度学习在科学计算领域的重要突破,它从根本上改变了处理连续物理问题的方式。与传统神经网络学习离散数据点映射不同,神经算子学习的是函数空间到函数空间的映射,这种范式转换使其具备离散化收敛性和超分辨率预测能力。在计算流体力学、天气预报等需要求解偏微分方程的场景中,神经算子能够在保持精度的同时将计算速度提升数个数量级。傅里叶神经算子(FNO)通过快速傅里叶变换实现高效计算,特别适合规则网格问题;而图神经算子(GNO)则擅长处理不规则网格和复杂几何形状。这种技术为参数敏 阅读详情

     ibatis默认提供四种事务  transaction 类图

   ExternalTransactionConfig :commit  rollbak方法都是个空实现 spring默认使用的这个

   UserProvidedTransaction :支持外部Connection  可以和jdbc混合使用  

   JdbcTransaction :原生jdbc事务

   JtaTransaction:分布式事务

  TransactionConfig 主要负责创建事务对象  每一个Transaction都有一个TransactionConfig   TransactionConfig类图

 

  事务控制实例代码

		try {
			sqlmapclient.startTransaction ();
			.....
			sqlmapclient.commitTransaction ();
		} finally {
			sqlmapclient.endTransaction ();
		}


startTransaction方法   :

    根据sqlMapConfig配置 调用TransactionManager类中的begin方法   创建一个新的事务  具体事务的创建由TransactionConfig接口的实现类完成  

    创建完成后  将事务(Transaction) 保存到SessionScope中  并设置当前sessionScope中的TransactionState为STATE_STARTED状态 

    SssionScope简单理解为ibatis上下文对象  它与SqlMapSession对象绑定  而SqlMapSession对象与当前线程绑定   SssionScope它持有当前Transaction, TransactionState

  

  TransactionManager  begin方法

	public void begin(SessionScope sessionScope, int transactionIsolation) throws SQLException, TransactionException {
		// .. 省略
		//TransactionConfig 创建一个新的Transaction
		trans = config.newTransaction(transactionIsolation);
		sessionScope.setCommitRequired(false);
		//当前事务对象保存到sessionScope
		sessionScope.setTransaction(trans);
		//设置当前事务状态
		sessionScope.setTransactionState(TransactionState.STATE_STARTED);
	}

JdbcTransactionConfig newTransaction方法

  public Transaction newTransaction(int transactionIsolation) {
	    return new JdbcTransaction(dataSource, transactionIsolation);
  }

 

commitTransaction 方法

   间接的调用了TrasactionManager的commit方法 提交事务 如果提交成功  设置事务状态为已提交状态

  TransactionManager  commit方法

	public void commit(SessionScope sessionScope) throws SQLException, TransactionException {
		Transaction trans = sessionScope.getTransaction();
		TransactionState state = sessionScope.getTransactionState();
		//..略
		//isCommitRequired 强制提交 可能出现异常
		if (sessionScope.isCommitRequired() || config.isForceCommit()) {
			//提交事务
			trans.commit();
			sessionScope.setCommitRequired(false);
		}
		//如果trans.commit()执行失败 这句不会执行 设置状态为已提交状态
		sessionScope.setTransactionState(TransactionState.STATE_COMMITTED);
	}

 JdbcTransaction  commit方法

  public void commit() throws SQLException, TransactionException {
    if (connection != null) {
      connection.commit();
    }
  }


endTransaction 收尾工作 

 ①.根据commitTransaction阶段 提交的事务状态 判断是不是需要回滚 ,

 ②.关闭数据库连接 ,  清理当前线程的sessionScope

 

TransactionManager  end 方法

	public void end(SessionScope sessionScope) throws SQLException, TransactionException {
		//从SessionScope获取Transaction  TransactionState
		Transaction trans = sessionScope.getTransaction();
		TransactionState state = sessionScope.getTransactionState();
		//...略
		try {
			if (trans != null) {
				try {
					//如果不是已提交状态  执行回滚操作
					if (state != TransactionState.STATE_COMMITTED) {
						if (sessionScope.isCommitRequired() || config.isForceCommit()) {
							//执行回滚操作
							trans.rollback();
							sessionScope.setCommitRequired(false);
						}
					}
				} finally {
					//清理preparedStatements map集合 关闭PreparedStatement
					sessionScope.closePreparedStatements();
					//关闭当前Connection
					trans.close();
				}
			}
		} finally {
			sessionScope.setTransaction(null);
			//重新设置事务状态 为结束状态
			sessionScope.setTransactionState(TransactionState.STATE_ENDED);
		}
	}


JdbcTransaction

rollback方法

  public void rollback() throws SQLException, TransactionException {
    if (connection != null) {
      connection.rollback();
    }
  }

close方法 关闭当前数据库连接

  public void close() throws SQLException, TransactionException {
    if (connection != null) {
      try {
        isolationLevel.restoreIsolationLevel(connection);
      } finally {
        connection.close();
        connection = null;
      }
    }
  }

 

三. zemax光学设计流程+案例 文章目录zemax 基本操作:1. 建立光学基本模型2. 像质评价3. 优化(重点)4. 公差分析简单镜头设计 zemax 基本操作: 1. 建立光学基本模型 2. 像质评价 3. 优化(重点) 对系统设定的约束条件或目标值 统称为操作数。 操作数: 光学特性参数(焦距EFFL,近轴放大率PMAG,入瞳位置EMPP) 像差参数(球差SPHA,彗差COMA,像散ASTI) 边界条件(中心厚度值CTVA,边缘厚度值ETAV) 优化的主要步骤: 设置评价函数和优化操作数 一般小像差系统采用波像差 构建 阅读详情

相关推荐

从BSCAN到BAP:深度解析Tessent MBIST逻辑的协同工作机制与设计考量

本文深入解析了Tessent MBIST逻辑中BSCAN Interface、Logic Group Def、Controller与BAP模块的协同工作机制。文章以一条测试指令的完整路径为例,详细阐述了数据流与控制流如何跨模块、跨时钟域协同工作,并重点探讨了MBIST BAP在协议转换与流量管理中的核心桥梁作用,为芯片内建自测试的集成与调试提供了关键的设计考量和实战技巧。

kappa的博客 482

ibatis事务

基于JDBC 的事务管理机制 ibatis 提供了自动化的JDBC 事务管理机制。 对于传统JDBC Connection 而言,我们获取Connection 实例之后,需要调用Connection.setAutoCommit 设定事务提交模式。在AutoCommit 为true 的情况下,JDBC 会对我们的操作进行自动提交,此时,每个JDBC 操作都是一个独立的任务。为了实现整体事务的原子...

cdenji的博客 281

3D视觉-结构光测量-线结构光测量

线结构光测量中,由激光器射出的激光光束透过柱面透镜扩束,再经过准直,产生一束片状光。这片光束像刀刃一样横切在待测物体表面,因此线结构光法又被成为光切法。线结构光测量常采用二维面阵CCD作为接受器件,因此只要通过增加垂直于面阵探测器的第三维度方向,就可以实现对三维物体的测量。

qq_20660115的博客 3129

Ibatis使用事务

一、事务概念     事务是一种机制、是一种操作序列,它包含了一组数据库操作命令,这组命令要么全部执行,要么全部不执行。因此事务是一个不可分割的工作逻辑单元。在数据库系统上执行并发操作时事务是作为最小的控制单元来使用的。这特别适用于多用户同时操作的数据通信系统。例如:订票、银行、保险公司以及证券交易系统等。 二、事务属性 事务4大属性: 1   原子性(Atomicity):事务是一个完整

cpcpc的专栏 6050

Unity布娃娃系统 Ragdoll Mecanim Mixer使用

6. 选完之后,左键下面的hip等角色各个部位不松开鼠标,拖拽连接到上面Amature的各个部位,如图,下面所有部位都连接完之后,第二步点击Configure Selected Bones确认你的部位连接选择。要做一个布娃娃和动画混合的项目,这个插件是比较不错的,搜了一圈文章教程也是抄来抄去,抄的没有头没有尾,自己摸索着用了一下,记录使用过程吧。8. 之后就点击步骤7图一中的Create Ragdoll,会发现player结构发生变化,如图。4. 添加完脚本之后会显示你的player结构,如图。

SuShengQuanshiW的博客 1649

液晶屏LVDS接口:【图文详讲】

​LVDS(Low Voltage Differential Signaling,即低电压差分信号)接口又称RS-644总线接口,是20世纪90年代才提出的一种数据传输和接口技术。LVDS接口是美国NS美国国家半导体公司为克服以TTL电平方式传输宽带高码率数据时功耗大,电磁干扰大等缺点而研制的一种数字视频信号传输方式

weixin_66299220的博客 1万+

spring整合ibatis事务管理(各种AOP,比较乱)

Spring通过DAO模式,提供了对iBATIS的良好支持。SqlMapClient对象是iBATIS中的主要对象,我们可以通过配置让spring来管理SqlMapClient对象的创建。   与hibernate类似,Spring 提供了SqlMapClientDaoSupport对象,我们的DAO可以继承这个类,通过它所提供的SqlMapClientTemplate对象来操纵数据库

徐行 3896

QML 果冻抖动:用 Scale 动画模拟 Q 弹反馈

介绍果冻抖动效果:点击后卡片通过多段 ParallelAnimation 实现 Scale X/Y 反向缩放和逐步衰减,模拟果冻弹性形变;进阶版本加入小幅 Rotation 增加活泼感,适合游戏、儿童应用等趣味反馈场景。

u011186532的专栏 425

如何处理Spring、Ibatis结合MySQL数据库使用时的事务操作

如何处理Spring、Ibatis结合MySQL数据库使用时的事务操作

gaohuanjie的专栏 2761

Apache Kylin 命令注入漏洞复现(CVE-2020-1956)

Apache Kylin 中的静态 API 存在安全漏洞,可以将os命令与用户输入字符串连接起来,攻击者可以在Kylin没有任何保护或验证的情况下执行任何os命令。

0xSec 1558

使用安卓的IMU数据进行 行人航位推算(PDR)推算步长 附python 代码

加速度计数据、陀螺仪数据、重力传感器数据、姿态仰角数据。数据分析与定位轨迹生成主要使用Python离线完成。示意图。

三维点云技术探索 1914

ibatis源码浅析- 初探

ibatis核心类       SqlMapExecutor:定义了数据库curd操作api     SqlMapTransactionManager : 主要定义了事务管理功能     SqlMapClient:继承SqlMapExecutor, SqlMapTransactionManager接口  也就具有curd操作 事务管理行为     SqlMapSession: 它有S

天行健,君子以自强不息 6816

YOLO26 实战全流程:从数据集标注到端到端无NMS推理(完整版,附ProgLoss核心调参技巧+避坑指南)

本章节是实战经验的精华❌ 数据集标注不规范,导致模型精度低 → ✅ 严格遵守工业级标注规范,标注框紧贴目标边缘,不要漏标/多标;❌ 训练时未使用预训练权重,导致收敛极慢 → ✅ 必须开启,预训练权重能让模型快速收敛;❌ ProgLoss参数调整幅度过大,导致训练崩溃 → ✅ 每次只调整一个参数,幅度±0.02即可,循序渐进;❌ 推理时强行添加NMS参数,画蛇添足 → ✅ YOLO26无需NMS,推理命令中不要加conf/iou参数,否则会降低推理速度;

专注于Python爬虫开发,分享爬虫技巧、项目实战与反爬经验,使用Scrapy、BeautifulSoup等工具,解决数据抓取难题。 1141

iBATIS框架源码剖析

iBATIS框架源码剖析 基本信息 作者: 任钢    出版社:电子工业出版社 ISBN:9787121108723 上架时间:2010-7-2 出版日期:2010 年6月 开本:16开 页码:510 更多详细信息请查看:http://www.china-pub.com/196843更有精彩样张抢先试读:http://www.china-pub.com/ureader/product.a...

weixin_33841503的博客 162

大中型超市收银系统(可直接运行)

光步前台收银系统系统功能:商品销售、商品退货、挂单、收银员权限、会员销售、单品取消、整单取消、商品查询、脱机销售、脱机数据上传,基本资料下载,开钱箱、小票打印、收款结算,支持多币种付款方式(现金、储值卡、礼券、微信等),支持多种促销。运行环境:.net 4.0登陆信息用户名:1001 密码:123456内置商品信息,商品编码可输入00001000 - 00010000,测试效果相关功能键F5 结算 F9挂单 F11商品查询 F8退货 Insert单品取消 Del整单取消 F12开钱箱F2 会员 Ctrl+Z退出系统 Home 锁屏 相关源码待公开

lwip-2.0.3

lwip是瑞典计算机科学院(SICS)的Adam Dunkels 开发的一个小型开源的TCP/IP协议栈。实现的重点是在保持TCP协议主要功能的基础上减少对RAM 的占用。

ibatis源码探究

数据库连接信息、iBATIS配置、

宝塔镇河妖的专栏 1198

Data-Structures-and-Algorithm-Analysis-in-Java.pdf

作者: Weiss, Mark A. 出版社: Addison Wesley Data Structures and Algorithm Analysis in Java is an “advanced algorithms” book that fits between traditional CS2 and Algorithms Analysis courses. In the old ACM Curriculum Guidelines, this course was known as CS7. This text is for readers who want to learn good programming and algorithm analysis skills simultaneously so that they can develop such programs with the maximum amo...

OSGi框架下使用iBATIS事务rollback不生效

关键词:osgi ibatis rollback autocommit 环境: osgi框架下使用spring和iBATIS做数据库操作,其中事务是使用iBATIS的实现。 [code="java"] SqlMapClient sqlmapClient = this.getSqlMapClient(); try { sqlmapClient.startTransac...

挨踢族 264

汉书HE8,好用的汇编代码编写工具

汉书HE8,好用的汇编代码编写工具早期编写汇编代码所用功能强大

Ibatis 源码解析

huo公司的ibatis代码主要对获取数据源的部分进行了二次开发,总体来说和开源的ibatis差不多。 ibatis的使用共分两部分,ibatis的的初始化以及ibatis的数据库访问。对源码的分析也通过这两部分开始。这也应该是看源码的一种方法吧。 1、ibatis的初始化 ibatis的初始化过程如下: 在用户调用Ibatis初始化代码后,BaseDbClient会使用如下代码,配置

七星手指的专栏 1615

ibatis源码浅析- 初始化

以SqlMapClientBuilder类的buildSqlMapClient方法为初始化入口 初始化过程 主要包括 1. 初始化全局配置(sqlMapConfig文件) 事务 DataSource等 2.sqlMap 文件初始化    类图   全局配置初始化时序图  以SqlMapConfigParser为核心主干 解析SqlMapConfig文件  解析后的值保存的到X

天行健,君子以自强不息 2968

ibatis的isequal_isequal ibatis

iBATIS 高级特性 1、主要内容 、关联对象 事务 延迟加载 缓存 动态标签 读写 ... Property 属性与 compareProperty 或 pareValye 属性值作比较,看是否...... 10. from 11. UserInfo 12. 此例中,根据参数 tag 值的不同,会获得不同的结果集,如果没有 remapResults="true" 属性,iBatis 会将第一...

weixin_34470566的博客 1784

项目开发-iBatis事务源码之开启新事务

iBatis事务源码流程整理如下。    iBatis的事务使用

本博客纯属个人网络笔记,如对阁下有用,甚喜;否则,关掉即可,不喜勿喷。专心写代码,不做键盘侠! 1494

Ibatis中关于事务的一个疑问的刨析——startTransaction的时候到底有没有与数据库交互。...

在Ibatis中我们要执行一个事务,代码是这样的:   sqlMapClient.startTransaction (); sqlMapClient.add (xxxxx); sqlMapClient.update (xxxxx); sqlMapClient.commitTransaction (); 看到这段代码你会不会有一个问题,sqlMapCli...

Spark Note Book 991

ibatis 源码分析

http://denger.iteye.com/blog/1126423

上尚若水 943

spring与ibatis集成之事务部分源码解析

ibatis是一个非常优秀的半自动ORM框架,相较于许多人认为编写sql和配置字段映射会降低开发效率,我认为在数据库最易成为系统瓶颈的情况下,开发人员必须通过手动编写sql来保证sql执行的高效,并在编写过程中思考表结构的设计是否合理。网上已有许多关于ibatis架构和映射实现原理解析的文章,本文主要讨论ibatis和spring集成后事务管理的实现。在spring和ibatis集成后,有两种方式...

weixin_30474613的博客 123
上一篇: ibatis源码浅析- 初始化
下一篇: Mysql jdbc driver源码浅析(一)
胸口碎大石_
博客等级 码龄17年 1154粉丝 82原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值