当前位置: 首页 > news >正文

青岛建站公司推荐好看简洁的logo

青岛建站公司推荐,好看简洁的logo,凡客模板wordpress,做简图的网站MyBatis的事务管理是由TransactionFactory和Transaction两个接口定义的#xff0c;TransactionFactory负责生成Transaction#xff0c;这是一个典型的工厂模式。 官方提供了事务管理的两种模式#xff1a; Managed#xff1a;对应ManagedTransactionFactory和ManagedTran…MyBatis的事务管理是由TransactionFactory和Transaction两个接口定义的TransactionFactory负责生成Transaction这是一个典型的工厂模式。 官方提供了事务管理的两种模式 Managed对应ManagedTransactionFactory和ManagedTransactionJDBC对应JdbcTransactionFactory和JdbcTransaction 重点看一下Transaction中提交和回滚的实现 public class ManagedTransaction implements Transaction {Overridepublic void commit() throws SQLException {// Does nothing}Overridepublic void rollback() throws SQLException {// Does nothing}}public class JdbcTransaction implements Transaction {Overridepublic void commit() throws SQLException {if (connection ! null !connection.getAutoCommit()) {if (log.isDebugEnabled()) {log.debug(Committing JDBC Connection [ connection ]);}connection.commit();}}Overridepublic void rollback() throws SQLException {if (connection ! null !connection.getAutoCommit()) {if (log.isDebugEnabled()) {log.debug(Rolling back JDBC Connection [ connection ]);}connection.rollback();}} }可以看出这两者的主要区别在于ManagedTransaction不会进行实际的事务提交和回滚而是交由外部进行控制而JdbcTransaction是我们能进行实际事务提交和回滚的所以如果我们要手动控制事务应该指定事务管理器为JdbcTransactionFactory例如在mybatis的配置文件中 ?xml version1.0 encodingUTF-8 ? !DOCTYPE configurationPUBLIC -//mybatis.org//DTD Config 3.0//ENhttps://mybatis.org/dtd/mybatis-3-config.dtd configurationenvironments defaultdevelopmentenvironment iddevelopmenttransactionManager typeJDBC/dataSource typePOOLED/dataSource/environment/environments /configuration那Transaction和实际执行查询的SqlSession又是什么关系呢原来是创建SqlSession的时候会交由Executor管理一起传给SqlSession public class DefaultSqlSessionFactory implements SqlSessionFactory {private SqlSession openSessionFromDataSource(ExecutorType execType, TransactionIsolationLevel level, boolean autoCommit) {Transaction tx null;try {final Environment environment configuration.getEnvironment();final TransactionFactory transactionFactory getTransactionFactoryFromEnvironment(environment);tx transactionFactory.newTransaction(environment.getDataSource(), level, autoCommit);final Executor executor configuration.newExecutor(tx, execType);return new DefaultSqlSession(configuration, executor, autoCommit);} catch (Exception e) {closeTransaction(tx); // may have fetched a connection so lets call close()throw ExceptionFactory.wrapException(Error opening session. Cause: e, e);} finally {ErrorContext.instance().reset();}} }当我们执行SqlSession的commit()时实际上是调用Executor的commit进而调用Transaction的commit() public class DefaultSqlSession implements SqlSession {Overridepublic void commit(boolean force) {try {executor.commit(isCommitOrRollbackRequired(force));dirty false;} catch (Exception e) {throw ExceptionFactory.wrapException(Error committing transaction. Cause: e, e);} finally {ErrorContext.instance().reset();}} }public abstract class BaseExecutor implements Executor {Overridepublic void commit(boolean required) throws SQLException {if (closed) {throw new ExecutorException(Cannot commit, transaction is already closed);}clearLocalCache();flushStatements();if (required) {transaction.commit();}} }
http://www.zqtcl.cn/news/851013/

相关文章:

  • 不会代码可以做网站维护吗成版年蝴蝶视频app免费
  • html5手机论坛网站模板支付商城网站制作
  • 自己主机做多个网站网站备案和服务器备案
  • 长安手机网站建设江西做网站的公司有哪些
  • 泉州微信网站开发万能浏览器有哪些
  • 商丘做网站公司新站seo快速收录网站内容页快速建站工具
  • 质监站网址数字化展厅建设方案
  • 免费网上商城网站建设廊坊十大名牌模板厂
  • 网站建设格式龙泉建设工程有限公司网站
  • 四海网络网站建设咨询深圳网站优化网站
  • 报名网站开发多钱做酒网站
  • 2014年网站设计趋势怎样用代码建设一个网站
  • 手机网站使用微信支付瑞诺国际公司团队介绍
  • 如何做网站内容架构分析网站建站平台eazyshop
  • 网站开发 商标第几类建站模板大全
  • 找事做的网站杭州网站建设有限公司
  • 临沂网站建设搭建短视频如何引流与推广
  • 网站项目建设管理简介网络营销的概念
  • 网站后台怎么添加代码食品网站开发的背景
  • 茶楼 网站dedecms 旅游网站模板
  • 物流网站做那个好凯里网站设计
  • 网站 方案网页设计尺寸用怎么量
  • 商城购物网站设计内容互联网公司网站建设费用
  • 做租号玩网站赚钱吗网站下的源代码和自己做的区别
  • 关于校园网站的策划书久久建筑网的账号
  • 网站宣传的方式怎么查看一个网站有没有做推广
  • 台州房产网站建设自助开通网站
  • 佛山正规网站建设报价二级域名需要申请吗
  • 网站用户体验比较论坛类网站可以做移动端吗
  • 佛山网站优化建设网站设计公司种类