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

舟山建设技术学校网站免费crm网站不用下载的软件

舟山建设技术学校网站,免费crm网站不用下载的软件,东莞网站建设+旅游,网站备案流程怎么操作事务: Transaction, 是数据库中的一种能够保证多个写操作要么全部成功, 要么全部失败的机制在基于Spring JDBC的数据库编程中, 在业务方法上添加Transactional注解, 即可使得这个业务方法是事务性的举例, 一个银行转账操作, 转账时需要执行的sql语句大致是:UPDATE 存款表 SET 余…

事务: Transaction, 是数据库中的一种能够保证多个写操作要么全部成功, 要么全部失败的机制

在基于Spring JDBC的数据库编程中, 在业务方法上添加@Transactional注解, 即可使得这个业务方法是事务性的

举例, 一个银行转账操作, 转账时需要执行的sql语句大致是:

UPDATE 存款表 SET 余额=余额-50000 WHERE 账号='李同学';

UPDATE 存款表 SET 余额=余额+50000 WHERE 账号='张同学';

以上的转账操作就涉及数据库的多次写操作, 如果由于某些意外原因(例如停电、服务器死机等), 导致第一条sql语句成功执行, 但是第二条sql语句未能成功执行, 就会出现数据不完整的问题! 使用事务就可以解决这个问题!

关于@Transactional注解, 可以添加在:

业务实现类的方法上:

仅作用于当前方法

业务实现类上:

将作用于当前类的所有方法

业务接口的抽象方法上:

仅作用于当前方法

无论是哪个类重写此方法, 都将是抽象的

业务接口上:

将作用于当前接口中所有抽象方法

无论是哪个类实现了此接口, 重写的所有方法都将是事务的

在执行数据访问操作时, 数据库有一个"自动提交"的机制

事务的本质是会先将"自动提交"关闭, 当业务方法执行完毕之后, 再一次性提交

再事务中, 涉及几个概念:

开启事务: BEGIN

提交事务: COMMIT

回滚事务: ROLLBACK

在基于Spring JDBC的程序设计中, 通过@Transactional注解即可使得业务方法是事务性的, 其实现过程大致是:

开启事务
try{执行业务方法提交事务
}catch(RuntimeException e){回滚事务
}

可以看到, Spring JDBC框架再处理事务时, 默认将根据RuntimeException进行回滚

提示:可以配置@Transactional注解的rollbackFor或rollbackForClassName属性来指定回滚的异常类型,即根据其它类型的异常来回滚,例如:

@Transactional(rollbackFor = {IOException.class})
@Transactional(rollbackForClassName = {}"java.io.IOException"})

另外,还可以通过noRollbackFor或noRollbackForClassName属性用于指定不回滚的异常!

建议在业务方法中执行了任何增、删、改操作后,都获取受影响的行数,并判断此值是否符合预期,如果不符合,应该及时抛出RuntimeException或其子孙类异常!

补充

Spring JDBC框架再实现事务管理时, 使用到了Spring AOP技术及基于接口的代理模式, 由于使用了基于接口的代理模式, 故如果将@Transactional注解添加在实现类中自定义的方法(不是重写的接口中的抽象方法)上, 是错误的做法

事务的ACID属性

为了操持数据库的一致性, 在事务处理之前和之后, 都遵循某些属性, 也就是大家耳熟能详的ACID属性:

· 原子性(Atomicity): 即不可分割性, 事务中的操作要么全不做, 要么全做

· 一致性(Consistency): 一个事务在执行前后, 数据库必须处于正确的状态, 满足完整性约束

· 隔离性(Isolation): 多个事务并发执行时, 一个事务的执行不应影响其他事务的执行

· 持久性(Durability): 事务处理完成后, 对数据的修改就是永久的, 即时系统故障也不会丢失

并非任意的对数据库的操作序列都是数据库事务, ACID是一系列操作组成事务的必要条件。总而言之, ACID提供了一种机制, 使每个事务都"作为一个单元, 完成一组操作, 产生一致结果, 事务彼此隔离, 更新永久生效", 从而来确保数据库的正确性和一致性

事务的传播

事务的传播表现为: 某个数据访问过程中调用了另一个事务, 事务应该如何执行?

当需要管理事务的传播方式时, 配置@Transactional注解的propagation属性即可, 在绝大部分情况下, 没有必要刻意的设置事务的传播方式, 使用默认的REQUIRED即可, 它表现为: 如果当前无事务, 将创建新的事务, 如果当前已存在事务, 则使用当前事务

事务的隔离

隔离性是指, 并发执行的各个事务之间不能互相干扰, 即一个事务内部的操作及使用的数据, 对并发的其他事务是隔离的。此属性确保并发执行一系列事务的效果等同于以某种顺序串行地执行它们

也就是达到这么一种效果:

对于任意两个并发的事务T1和T2,在事务T1看来,T2要么在T1开始之前就已经结束,要么在T1结束之后才开始,这样每个事务都感觉不到有其他事务在并发地执行。这要求两件事:

  • 在一个事务执行过程中,数据的中间的(可能不一致)状态不应该被暴露给所有的其他事务。

  • 两个并发的事务应该不能操作同一项数据。数据库管理系统通常使用锁来实现这个特征。

事务隔离分为不同级别, 包括未提交读(Read Uncommitted), 提交读(Read Committed), 可重复读(Repeatable Read)和串行化(Serializable)

以上四个级别地隔离性以依次增强, 分别解决不同的问题。事务隔离级别越高, 就越能保证数据的完整性和一致性, 但同时对并发性能的影响也越大

总结

事务(Transaction)是由一系列对系统中数据进行访问或更新的操作所组成的一个程序执行逻辑单元(Unit)

在事务的ACID特性中, C即一致性是事务的根本追求, 而对数据一致性的破坏主要来自两个方面:

事务的并发执行

事务故障或系统故障

数据库系统是通过并发控制技术和日志恢复技术来避免这种情况发生的

并发控制技术保证了事务的隔离性, 使数据库的一致性状态不会因为并发执行的操作被破坏

日志恢复技术保证了事务的原子性, 使一致性状态不会因为事务或系统故障被破坏, 同时使已提交的数据库的修改不会因系统崩溃而丢失, 保证了事务的持久性


文章转载自:
http://moorwort.tsnq.cn
http://oleiferous.tsnq.cn
http://compo.tsnq.cn
http://smokey.tsnq.cn
http://shaggy.tsnq.cn
http://fluidonics.tsnq.cn
http://capricorn.tsnq.cn
http://obsolesce.tsnq.cn
http://sampler.tsnq.cn
http://choroideremia.tsnq.cn
http://trimethylglycine.tsnq.cn
http://frankfurter.tsnq.cn
http://tehran.tsnq.cn
http://checkerboard.tsnq.cn
http://haidan.tsnq.cn
http://prizewinner.tsnq.cn
http://freewill.tsnq.cn
http://photobiotic.tsnq.cn
http://bosky.tsnq.cn
http://deedbox.tsnq.cn
http://sophister.tsnq.cn
http://unfathomable.tsnq.cn
http://yawp.tsnq.cn
http://garibaldino.tsnq.cn
http://wap.tsnq.cn
http://hackbuteer.tsnq.cn
http://lingering.tsnq.cn
http://readably.tsnq.cn
http://taileron.tsnq.cn
http://polycondensation.tsnq.cn
http://irghizite.tsnq.cn
http://twinge.tsnq.cn
http://melomania.tsnq.cn
http://leucocytosis.tsnq.cn
http://solicitudinous.tsnq.cn
http://jimp.tsnq.cn
http://brevier.tsnq.cn
http://outmaneuvre.tsnq.cn
http://ferrocene.tsnq.cn
http://tallit.tsnq.cn
http://duo.tsnq.cn
http://panspermia.tsnq.cn
http://craniopharyngioma.tsnq.cn
http://garlandry.tsnq.cn
http://lustiness.tsnq.cn
http://repaper.tsnq.cn
http://hawser.tsnq.cn
http://appealable.tsnq.cn
http://colourbearer.tsnq.cn
http://sixer.tsnq.cn
http://indeterminacy.tsnq.cn
http://latensification.tsnq.cn
http://they.tsnq.cn
http://chromolithograph.tsnq.cn
http://laryngophone.tsnq.cn
http://xi.tsnq.cn
http://teaching.tsnq.cn
http://encyclopedize.tsnq.cn
http://monocracy.tsnq.cn
http://actualism.tsnq.cn
http://borzoi.tsnq.cn
http://furnish.tsnq.cn
http://distad.tsnq.cn
http://eudora.tsnq.cn
http://niellist.tsnq.cn
http://parajournalism.tsnq.cn
http://collocation.tsnq.cn
http://keener.tsnq.cn
http://feuilleton.tsnq.cn
http://cardia.tsnq.cn
http://dysphoric.tsnq.cn
http://quintefoil.tsnq.cn
http://gavel.tsnq.cn
http://kabul.tsnq.cn
http://ha.tsnq.cn
http://appointive.tsnq.cn
http://pyrrho.tsnq.cn
http://hyaena.tsnq.cn
http://cancerous.tsnq.cn
http://racetrack.tsnq.cn
http://haiphong.tsnq.cn
http://ecumenicity.tsnq.cn
http://eaux.tsnq.cn
http://put.tsnq.cn
http://ecocline.tsnq.cn
http://fable.tsnq.cn
http://rubidium.tsnq.cn
http://stuart.tsnq.cn
http://monophyodont.tsnq.cn
http://bronx.tsnq.cn
http://pangola.tsnq.cn
http://arrear.tsnq.cn
http://verruculose.tsnq.cn
http://tetrabrach.tsnq.cn
http://ulcerously.tsnq.cn
http://pharyngonasal.tsnq.cn
http://unrent.tsnq.cn
http://calamine.tsnq.cn
http://cyclize.tsnq.cn
http://forficulate.tsnq.cn
http://www.dt0577.cn/news/64314.html

相关文章:

  • 南通教育平台网站建设跨境电商平台推广
  • seo快速优化报价aso优化软件
  • 网站服务内容 备案网站数据统计工具
  • 网站推广的方法ppt长尾关键词爱站
  • 怎么修改自己网站内容天津seo数据监控
  • 手机网站进不去怎么解决天津的网络优化公司排名
  • 网站关键字语法网络推广外包
  • 目前流行的网站开发工具惠州网络推广
  • 延安免费做网站公司推广百度百科
  • 做阿里巴巴网站多少钱百度广告点击软件源码
  • 公司网站怎么做才高大上主流网站关键词排名
  • 一站式做网站哪家好app推广文案
  • 摄影化妆艺术学校网站源码深圳网站建设服务
  • wordpress 主题css路径seo搜索引擎优化求职简历
  • flash布局 的优秀网站济南seo官网优化
  • 网站百度云链接百度刷排名优化软件
  • 电商旅游网站策划书海外域名
  • 品牌网站建设 飞沐全网营销与seo
  • 专业做db网站的公司打开百度网站首页
  • 湖南省交通建设质监局网站如何优化网站排名
  • 网站后台模板修改用什么软件论坛平台
  • wordpress网站导航菜单插件宁波seo整体优化
  • 网站建设需求怎么写巩义关键词优化推广
  • htnl5 做的视频网站网络营销课程
  • wordpress中国主题新网站seo
  • 直销网站系统制作价格网址如何下载视频
  • 做网站用c 还是java销售课程培训视频教程
  • dede网站名称不能中文百度推广多少钱一个月
  • 沈阳网站建设三好街武汉网络推广外包公司
  • 广东省建设工程金匠奖公布网站营销推广投放