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

六安市 网站集约化建设品牌策划书案例

六安市 网站集约化建设,品牌策划书案例,建设网站学什么条件,自己做的网站怎么上传到网络Spring的事务管理Spring的事务管理1、事务的回顾【1】事务的定义【2】事务的ACID原则2、spring事务API介绍【了解】【1】PlatformTransactionManager【1.1】PlatformTransactionManager作用【1.2】PlatformTransactionManager接口【1.3】PlatformTransactionManager实现类【2】…

Spring的事务管理

    • Spring的事务管理
      • 1、事务的回顾
        • 【1】事务的定义
        • 【2】事务的ACID原则
      • 2、spring事务API介绍【了解】
        • 【1】PlatformTransactionManager
          • 【1.1】PlatformTransactionManager作用
          • 【1.2】PlatformTransactionManager接口
          • 【1.3】PlatformTransactionManager实现类
        • 【2】TransactionDefinition
          • 【2.1】TransactionDefinition作用
          • 【2.2】TransactionDefinition接口
          • 【2.3】事务隔离级别
            • 【2.3.1】为什么要事务隔离?
            • 【2.3.2】spring事务隔离级别
          • 【2.4】事务传播行为

Spring的事务管理

1、事务的回顾

【1】事务的定义

是数据库操作的最小工作单元,是作为单个逻辑工作单元执行的一系列操作,这些操作作为一个整体一起向系统提交,要么都执行、要么都不执行;事务是一组不可再分割的操作集合

【2】事务的ACID原则

事务具有4个基本特性:原子性、一致性、隔离性、持久性。也就是我们常说的ACID原则

  • 原子性(Atomicity):
    一个事务已经是一个不可再分割的工作单位。事务中的全部操作要么都做;要么都不做

    例如:A和B两个人一共1000元,A给B转账100元,A付款100元,B收款100元,A的付款行为和B的收款行为要么都成功,要么都失败
    
  • 一致性(Consistency):
    事务的执行使数据从一个状态转换为另一个状态,但是对于整个数据的完整性保持稳定。

    例如:A和B两个人一共1000元,无论A,B两人互相转账多少次,A和B两个人总额都应该是1000元
    
  • 隔离性(Isolation):
    事务允许多个用户对同一个数据进行并发访问,而不破坏数据的正确性 和完整性。同时,并行事务的修改必须与其他并行事务的修改相互独立。

例如:万达影院有《叶问4》电影票100张,允许所有人同时去淘票票上购票,当第100张电影票被A,B,C3人同时购买,如果A拿到第100张电影票,但是还在犹豫要不要付钱,则B,C必须等待A的决定,如果A决定付钱,B.C就无法抢到票,如果A超时不付钱,则这第100张电影票回归票池,从新分配。

  • 持久性(Durability):
    一个事务一旦提交,它对数据库中数据的改变会永久存储起来。其他操作不会对它产生影响

    例如:万达影院有《叶问4》电影票100张,100张电影票销售完毕,对于每个购买者来说,他的购买记录已经产生,即使退票,他之前的购买记录也不会消失。
    

2、spring事务API介绍【了解】

【1】PlatformTransactionManager

【1.1】PlatformTransactionManager作用

​ PlatformTransactionManager【事务平台管理器】:是一个接口,定义了获取事务、提交事务、回滚事务的接口

【1.2】PlatformTransactionManager接口
public interface PlatformTransactionManager {//根据事务定义TransactionDefinition,获取事务TransactionStatus getTransaction(TransactionDefinition definition);//提交事务void commit(TransactionStatus status);//回滚事务void rollback(TransactionStatus status);}
【1.3】PlatformTransactionManager实现类

事务平台管理器PlatformTransactionManager定义了标准,他有如下经常使用的实现

PlatformTransactionManager的实现类说明
org.springframework.jdbc.datasource.DataSourceTransactionManagerDataSource 数据源的事务
org.springframework.orm.hibernateX.HibernateTransactionManagerHibernate 事务管理器。
org.springframework.orm.jpa.JpaTransactionManagerJPA 事务管理器
org.springframework.transaction.jta.JtaTransactionManager多个数据源的全局事务管理器
org.springframework.orm.jdo.JdoTransactionManagerJDO 事务管理器

【2】TransactionDefinition

【2.1】TransactionDefinition作用

TransactionDefinition【事务定义信息】:是一个接口,定义了事务隔离级别、事务传播行为、事务超时时间、事务是否只读

【2.2】TransactionDefinition接口
public interface TransactionDefinition {/**********************事务传播行为类型常量***********************************///事务传播行为类型:如果当前没有事务,就新建一个事务,如果已经存在一个事务中,加入到这个事务中。int PROPAGATION_REQUIRED = 0;//事务传播行为类型:支持当前事务,如果当前没有事务,就以非事务方式执行。 int PROPAGATION_SUPPORTS = 1;//事务传播行为类型:当前如果有事务,Spring就会使用该事务;否则会抛出异常int PROPAGATION_MANDATORY = 2;//事务传播行为类型:新建事务,如果当前存在事务,把当前事务挂起。 int PROPAGATION_REQUIRES_NEW = 3;//事务传播行为类型:以非事务方式执行操作,如果当前存在事务,就把当前事务挂起。 int PROPAGATION_NOT_SUPPORTED = 4;//事务传播行为类型:即使当前有事务,Spring也会在非事务环境下执行。如果当前有事务,则抛出异常int PROPAGATION_NEVER = 5;//事务传播行为类型:如果当前存在事务,则在嵌套事务内执行。int PROPAGATION_NESTED = 6;/**********************事务隔离级别常量***********************************///MySQL默认采用ISOLATION_REPEATABLE_READ,Oracle采用READ__COMMITTED级别。)//隔离级别:默认的隔离级别()int ISOLATION_DEFAULT = -1;//隔离级别:读未提交(最低)int ISOLATION_READ_UNCOMMITTED = Connection.TRANSACTION_READ_UNCOMMITTED;//隔离级别:读提交int ISOLATION_READ_COMMITTED = Connection.TRANSACTION_READ_COMMITTED;//隔离级别:可重复度int ISOLATION_REPEATABLE_READ = Connection.TRANSACTION_REPEATABLE_READ;//隔离级别:序列化操作(最高)int ISOLATION_SERIALIZABLE = Connection.TRANSACTION_SERIALIZABLE;//默认事务的超时时间int TIMEOUT_DEFAULT = -1;//获取事务的传播行为int getPropagationBehavior();//获取事务的隔离级别int getIsolationLevel();//获取超时时间int getTimeout();//是否只读boolean isReadOnly();//事务名称String getName();
}
【2.3】事务隔离级别
【2.3.1】为什么要事务隔离?

如果没有定义事务隔离级别:

  • 脏读

​ 在一个事务中读取到了另外一个事务修改的【未提交的数据】,而导致多次读取同一个数据返回的结果不一致 (必须要解决的)

例如:1.事务1,小明的原工资为1000, 财务人员将小明的工资改为了8000【但未提交事务】2.事务2,小明读取自己的工资 ,发现自己的工资变为了8000,欢天喜地!3.事务1,财务发现操作有误,回滚了操作,小明的工资又变为了1000像这样,小明读取的工资数8000是一个脏数据
  • 不可重复读

​ 在一个事务中读取到了另外一个事务修改的【已提交的数据】,而导致多次读取同一个数据返回的结果不一致

例如:1.事务1,小明读取了自己的工资为1000,操作还没有完成 2.事务2,这时财务人员修改了小明的工资为2000,并提交了事务.3.事务1,小明再次读取自己的工资时,工资变为了2000
  • 幻读(虚读):

    ​ 一个事务读取了几行记录后,另一个事务插入一些记录,幻读就发生了。再后来的查询中,第一个事务就会发现有些原来没有的记录

例如:   1.事务1,财务统计所有工资为5000的员工有10人。2.事务2,人事向user表插入了一条员工记录,工资也为50003.事务1,财务再次读取所有工资为5000的员工 共读取到了11条记录,明明刚刚是10人啊?产生幻觉了?

事务隔离就是帮助我们解决:脏读、不可重复读、幻读(虚读)

【2.3.2】spring事务隔离级别

隔离级别由低到高【读未提交】=>【读已提交】=>【可重复读】=>【序列化操作】

隔离级别说明脏读不可重复读幻读
ISOLATION_DEFAULTspring默认数据库的隔离级别
ISOLATION_READ_UNCOMMITTED读未提交
ISOLATION_READ_COMMITTED读已提交×
ISOLATION_REPEATABLE_READ可重复读××
ISOLATION_SERIALIZABLE序列化操作×××

对大多数数据库来说就是READ_COMMITTED(读已提交)

MySQL默认采用REPEATABLE_READ(可重复读),

Oracle采用READ__COMMITTED()

Spring的隔离级别默认数据库的隔离级别:ISOLATION_DEFAULT

【2.4】事务传播行为

事务传播行为:指的就是当一个事务方法被另一个事务方法调用时,这个事务方法应该如何进行。

传播行为说明
REQUIRED当前如果有事务,Spring就会使用该事务;否则会开始一个新事务(增、删、改)
SUPPORTS当前如果有事务,Spring就会使用该事务;否则不会开始一个新事务(查询)
MANDATORY当前如果有事务,Spring就会使用该事务;否则会抛出异常
REQUIRES_NEW当前如果有事务,把当前事务挂起,新建事务
NOT_SUPPORTED当前有事务,Spring也会在非事务环境下执行。如果当前有事务,则该事务挂起
NEVER当前有事务,Spring也会在非事务环境下执行。如果当前有事务,则抛出异常
NESTED当前有事务,则在嵌套事务中执行。如果没有,那么执行情况与REQUIRED一样

【默认】REQUIRED:当前如果有事务,Spring就会使用该事务;否则会开始一个新事务

http://www.zhongyajixie.com/news/57616.html

相关文章:

  • 行业门户网站建设seo如何去做优化
  • 做网站需要电脑吗营销策划的概念
  • 域名及密码登录域名管理网站外贸推广代理
  • 新疆生产建设兵团国土资源局网站百度我的订单app
  • 操作简单网站搭建费用哪些浏览器可以看禁止访问的网站
  • 美容类网站模版企业seo培训
  • 网站建设制作设计seo优化南宁硬件优化大师下载
  • 宁夏做网站的中国搜索引擎排名
  • wordpress微博分享插件成都seo优化
  • 河源建设用地竞拍网站惠州关键词排名优化
  • 网站备案是给什么进行备案获客
  • 自己做网站需要什么条件权威解读当前经济热点问题
  • 网站建设所需的基本内容seo优化推广业务员招聘
  • 成都精品网站建设2345网址导航删除办法
  • 网站主机免费申请长沙seo优化推荐
  • 网站管理与建设测试题百度推广登录首页
  • 如何用网站做招聘百度新闻首页
  • 如何免费建设网站seo排名推广
  • 安徽网站建站系统哪家好优化网站排名如何
  • 网站开发技术对比怎么在百度推广自己的网站
  • 视觉品牌网站建设百度的合作网站有哪些
  • 做视频网站视频用什么插件企业查询天眼查
  • WordPress手机用户提示登录最新seo自动优化软件
  • h5移动端网站模板下载网络软营销
  • 温州做网站找哪家好软文代写费用
  • 高陵微网站建设就业培训机构有哪些
  • 专做立体化的网站搜索引擎优化分析报告
  • 搜索大全引擎入口网站google ads
  • 网站建设站长海口网站排名提升
  • 做博彩网站判刑多少年东莞seo网站制作报价