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

创手机网站建立wordpress

创手机网站,建立wordpress,做视频网站许可证,快云助手网站建设视频教程对于数据库事务#xff0c;我们都不陌生#xff0c;数据库的事务#xff08;Transaction#xff09;是数据库管理系统执行过程中的一个逻辑单位#xff0c;也是一个不可分割的工作单位。它包含一个或多个SQL语句#xff0c;这些语句要么全部执行#xff0c;要么全部不执…对于数据库事务我们都不陌生数据库的事务Transaction是数据库管理系统执行过程中的一个逻辑单位也是一个不可分割的工作单位。它包含一个或多个SQL语句这些语句要么全部执行要么全部不执行。事务是一个原子操作单元其对数据的修改要么全都执行要么全都不执行。那么我们就得来看看这个 Mybatis 是怎么处理事务的了。 ACID特性 原子性Atomicity事务是一个原子操作单元其对数据的修改要么全都执行要么全都不执行。 一致性Consistency事务必须使数据库从一个一致性状态变换到另一个一致性状态。 隔离性Isolation事务的执行不受其他事务的干扰事务执行的中间结果对其他事务是不可见的。 持久性Durability一旦事务提交则其结果就是永久性的即使系统发生崩溃事务执行的结果也不能丢失。 我们通过使用事务可以确保数据的完整性和一致性特别是在多个用户或系统并发访问和修改数据库时。如果没有事务那么在这些并发操作中可能会出现数据不一致、数据丢失或数据重复等问题。通过使用事务可以锁定被修改的数据直到事务完成并提交从而确保数据的完整性和一致性。 Mybatis的事务 MyBatis 的事务控制可以从以下几个方面入手 1.事务管理机制的选择MyBatis 提供了两种主要的事务管理机制分别是 JDBC 事务管理机制和 MANAGED 事务管理机制。 JDBC 事务管理机制这种机制利用 java.sql.Connection 对象来完成对事务的提交commit()、回滚rollback()、关闭close()等操作。MyBatis 框架自身会管理事务采用原生的 JDBC 代码去管理事务如设置 conn.setAutoCommit(false); 来开启事务并在业务处理完成后手动提交事务 conn.commit();。MANAGED 事务管理机制在这种机制下MyBatis 本身不会去实现事务管理而是让程序的容器如 JBOSS、Weblogic来实现对事务的管理。 2.事务的配置在 MyBatis 的 XML 配置文件中可以通过节点定义连接某个数据库的信息而的 type 属性决定了使用哪种类型的事务管理机制。例如将的 type 配置为 JDBC 会使用 JDBC 事务管理机制。 3.事务工厂的创建MyBatis 的事务管理依赖于 TransactionFactory 事务工厂的创建。根据的 type 配置和 DataSource 实例TransactionFactory 会创建一个 Environment 对象该对象表示一个数据库的连接并且会被设置到 Configuration 实例中以供后续使用。 4.业务场景的应用在实际的业务场景中如购买操作包含多个执行过程查询库存、下单、更新库存或两个患者账户之间的转账操作需要确保这些操作作为一个整体进行要么全部成功要么全部失败并回滚。这时就需要引入事务控制保证整个操作的有效性。 5.事务的边界管理合理控制事务的边界也是非常重要的。过宽的事务边界可能导致事务执行时间过长影响系统性能而过窄的事务边界则可能导致数据不一致。因此在设计系统时需要仔细考虑每个事务的边界。 6.异常处理在事务执行过程中如果出现异常需要根据异常类型和业务需求决定是回滚事务还是进行其他处理。确保在出现异常时能够正确地处理事务避免数据的不一致和丢失。 如何设置Mybatis的全局事务 在 MyBatis 中全局事务的设置通常依赖于底层的数据库连接池和事务管理器。MyBatis 本身并不直接提供全局事务管理的功能而是依赖于 JDBC、Spring 或其他容器提供的事务管理机制。下面是一些常见的方法来设置 MyBatis 的全局事务 1. 使用 JDBC 进行事务管理 如果你的应用没有使用 Spring 或其他容器你可以直接使用 JDBC 进行事务管理。在 MyBatis 的配置文件中你可以将事务管理器设置为 JDBC。 configuration environments defaultdevelopment environment iddevelopment transactionManager typeJDBC/ dataSource typePOOLED !-- 数据库连接配置 -- /dataSource /environment /environments !-- 其他配置 -- /configuration 在代码中你需要手动管理事务的开启、提交和回滚。 try (SqlSession session sqlSessionFactory.openSession()) { // 开启事务 Connection conn session.getConnection(); conn.setAutoCommit(false); // 执行业务逻辑... // 提交事务 conn.commit(); } catch (Exception e) { // 回滚事务 try (Connection conn session.getConnection()) { if (!conn.isClosed()) { conn.rollback(); } } catch (SQLException ex) { // 处理异常 } // 处理异常... } 2. 使用 Spring 管理 MyBatis 事务 如果你的应用使用了 Spring 框架那么可以利用 Spring 的声明式事务管理来管理 MyBatis 的事务。这通常是通过在 Spring 配置文件中配置事务管理器并在需要事务的方法上使用 Transactional 注解来实现的。 beans xmlnshttp://www.springframework.org/schema/beans xmlns:xsihttp://www.w3.org/2001/XMLSchema-instance xmlns:txhttp://www.springframework.org/schema/tx xsi:schemaLocationhttp://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.0.xsd http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-3.0.xsd !-- 配置数据源 -- bean iddataSource classorg.apache.commons.dbcp.BasicDataSource destroy-methodclose !-- 数据源属性配置 -- /bean !-- 配置 SqlSessionFactory -- bean idsqlSessionFactory classorg.mybatis.spring.SqlSessionFactoryBean property namedataSource refdataSource/ !-- 其他配置 -- /bean !-- 配置事务管理器 -- bean idtransactionManager classorg.springframework.jdbc.datasource.DataSourceTransactionManager property namedataSource refdataSource/ /bean !-- 开启注解事务管理 -- tx:annotation-driven transaction-managertransactionManager/ !-- 其他配置 -- /beans Java 代码中使用 Transactional Service public class MyService { Autowired private MyMapper myMapper; Transactional public void myTransactionalMethod() { // 执行业务逻辑... myMapper.updateSomeData(); // 如果抛出异常则事务回滚 } } 在上面的例子中Transactional 注解告诉 Spring 在执行 myTransactionalMethod 方法时应该开启一个事务。如果方法执行成功则事务提交如果方法抛出异常则事务回滚。 3. 使用其他容器的事务管理 除了 Spring还有其他一些容器或框架也提供了事务管理的功能如 Java EE 容器。如果你正在使用这些容器或框架你可以根据它们的文档来配置和管理 MyBatis 的事务。 确保你的数据库连接池支持事务。大多数现代连接池如 HikariCP、c3p0、DBCP 等都支持事务。在使用 Spring 或其他容器管理事务时确保你的 MyBatis Mapper 接口或实现类被正确地扫描和注册为 Spring Bean。在使用 Transactional 注解时注意其传播行为propagation behavior、隔离级别isolation level等属性的设置以满足你的业务需求。 所以你对Mybatis的事务了解了么
http://www.pierceye.com/news/59952/

相关文章:

  • 寻找网站优化公司如何做kindle电子书下载网站
  • asp.net做网站如何展示界面义乌来料加工网
  • 京东网站拼图验证怎么做工程公司有哪些职位
  • 网站正在升级建设中代码深圳比较好的网站设计公司
  • 深圳南山区网站建设金融理财管理网站源码 dedecms
  • 文化传播有限公司网站建设朝阳seo
  • 网站开发最适合语言面试简历模板
  • 国外互动网站网站文章可以做外链吗
  • 各地残疾人联合会网站建设网上教育培训机构
  • 官方网站怎么找深圳市年检在哪个网站做
  • 专业网站建设找哪家网站开发怎么收客户费
  • 西安做视频网站公司志勋网站建设公司
  • 昆明企业网站的建设东莞网站优化案例
  • 网站公众平台建设方案嘉兴自助模板建站
  • 四川网站建设外包php技术的网站开发
  • 修改网站默认首页购物平台最新排名
  • 网站建设公司好做吗公众号外链网站怎么做
  • 防钓鱼网站宣传网址查询ip地址
  • 西安未央区做网站设计师图片素材网站有哪些
  • 青岛网站建设网址手机网站建立
  • 凡科网站建设好河南app定制
  • 上海网站推广企业wordpress源码系统下载
  • 响应式网站宽度app编辑软件
  • 邯郸之窗官网网站缓存优化怎么做
  • 谷歌网站站长指南dede网站 异步生成
  • 网站地图无法生成兰州网站建设方法
  • wordpress 分类合并网站上seo怎么做
  • 英语网站建设郑州网站建设msgg
  • 淄博网站建设公司有多少家有没有网站开发软件
  • 山东企业网站建设哪家好青岛开发区网站