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

中国网站排名前100jsp做网站视频教程

中国网站排名前100,jsp做网站视频教程,公众号免费推广平台,在线编辑器文章目录 Q1、事务的四大特性是什么#xff1f;Q2、Spring支持的事务管理类型有哪些#xff1f;Spring事务实现方式有哪些#xff1f;Q3、说一下Spring的事务传播行为Q4、说一下Spring的事务隔离Q5、Spring事务的实现原理Q6、Spring事务传播行为的实现原理是什么#xff1f… 文章目录 Q1、事务的四大特性是什么Q2、Spring支持的事务管理类型有哪些Spring事务实现方式有哪些Q3、说一下Spring的事务传播行为Q4、说一下Spring的事务隔离Q5、Spring事务的实现原理Q6、Spring事务传播行为的实现原理是什么Q7、Spring多线程事务能否保证事务的一致性Q8、Spring事务失效的原因 Q1、事务的四大特性是什么 答案 即ACID 原子性Atomicity即事务包含的所有操作要么同成功要么同失败一致性Cosistency即事务必须使得数据库从一个一致性状态到两一个一致性状态。如用户A和用户B两者的钱加起来一共5000那么不管A和B之间如何转账转几次账事务结束后两个用户的钱相加来应该还得是5000这就是事务的一致性隔离性Isolation多个事务并发时之间要相互隔离不能被其他事务干扰持久性Durability事务一旦提交对数据库中数据的改变就是永久的即使数据库故障也不会丢失提交事务的操作 Q2、Spring支持的事务管理类型有哪些Spring事务实现方式有哪些 答案 支持的事务管理类型有两种 Spring支持两种类型的事务管理 编程式事务管理灵活性高但难维护 Autowired TransactionTemplate transactionTemplate ;声明式事务管理业务代码和事务管理分离只需用注解和xml配置来管理事务。以下为基于注解Transactional 答案 实现声明式事务的三种方式 基于接口Spring早期版本时用更接近底层源码有基于TransactionInterceptor的声明式事务基于TransactionProxyFactoryBean的声明式事务基于tx和aop的xml声明式事务管理和Spring AOP结合利用切点表达式使得事务管理更加灵活基于Transactional的全注解方式在需要实施事务管理的方法或者类上加Transactional注解指定事务规则即可实现事务管理 Q3、说一下Spring的事务传播行为 答案 两个事务方法之间的嵌套调用时这个事务方法如何进行即事务的传播特性。 Transactional public void trans(){sub();log();query();}Transactional //SUPPORTS public info query(){}Transactional //REQUIRES_NEW public void log(){}以上面的query方法为例其用SUPPORTS即单独执行时不开启事务就一个查询当然不用开启被有事务的外部方法调用时则融入到这个外部方法的事务中与他们同成功同失败。到大学了和其余室友住一个屋子还是你自己外面租一个新房子 Q4、说一下Spring的事务隔离 答案 事务隔离用来解决并发事务所产生的一些问题 脏读不可重复读幻影读 通过设置不同的隔离级别可解决以上问题。 脏读 事务2只是改了余额但并未提交事务1就把这个没提交的值读走了如果以后事务2最终回滚就出问题了。即一个事务读取了另一个事务中没有提交的数据会在本事务中产生数据不一致的问题。 Transactional(isolation isolation.READ_COMMITTED)设置事务隔离策略为读已提交只读别的并发事务已提交的修改。 不可重复读 事务1先读后去处理其他事儿然后期间事务2修改并commit等事务1再读则产生数据不一致的问题。 Transactional(isolation isolation.REPEATABLE_READ)设置事务隔离策略为可重复读REPEATABLE_READ确保事务1可以多次从一个字段中读到相同的值即事务1执行期间禁止其他事务对这个字段进行更新行锁。 幻影读 不可重复读是针对一行数据而幻影读则是针对整个表比如两次读取表中多出了一行数据 即一个事务所在的方法中多次进行整表数据读取结果不一样产生数据不一致问题。 Transactional(isolation isolation.SERIALIZABLE)需要设置事务级别为串行化SERIALIZABLE确保事务1可以多次从一个表中读到相同的行数事务1执行期间禁止其他事务对这个表进行增删改但这样性能十分低下表锁 最后当不设置事务隔离级别时将默认使用底层所选数据库自身的默认事务隔离级别。 SELECT tx_isolation;Q5、Spring事务的实现原理 以JavaConfig的方式为例使用是 //启动事务这样可以使用Transactional注解 EnableTransactionManagement答案 没有Spring之前单靠JDBC来操作是这样的 try {//...//将事务提交机制改为手动提交conn.setAutoCommit(false);//业务逻辑//在这里事务结束手动提交数据conn.commit();}Spring事务是把上面业务逻辑前后的事务开启与提交用AOP包了一下即原理是Spring事务底层是基于数据库事务和AOP机制。 为使用了Transactional注解的Bean创建一个动态代理对象bean初始化后调用bean的后置处理器来创建动态代理如果是事务方法类上面、接口上面、方法上面、接口方法上面则开启事务 try{- 创建数据库连接- 修改数据库连接的autocommit属性为false禁止此连接自动提交- 执行当前方法方法中会执行数据库操作的业务SQL- }catch{- 若出现异常且这个异常需要回滚则回滚事务 }没有发生异常则提交事务 Q6、Spring事务传播行为的实现原理是什么 答案 Spring的事务信息是存于ThreadLocal中的所以一个线程永远只能有一个事务。对于被调用的事务方法当 融入当传播行为是融入外部事务则拿到ThreadLocal中的Connection共享一个数据库连接来共同提交与回滚创建新事务当传播行为是创建新的事务则会把嵌套的新事务存入ThreadLocal再将外部暂存起来当嵌套事务提交或回滚后再将暂存的外部事务信息恢复到ThreadLocal来提交或回滚 详细流程 外部创建数据库连接Connection并存入ThreadLocal修改数据库连接的autocommit属性为false外部返回事务状态信息TransactionInfo.newTransactiontrue)外部往下执行方法中途发现内部调用了另一个事务方法内嵌判断当前ThreadLoacl是否已有Connection有即是内嵌事务需要判断事务传播行为到此分两种情况 情况一当传播行为是融入 不会创建connection返回事务状态信息TransactionInfo.newTransactionfalse)即不是一个新事务内部被调用的事务方法开始执行相关SQL执行完后判断TransactionInfo.newTransaction是否为true此时是融入这个值为false不提交内部被调用的事务方法执行完成外部方法继续往下执行执行完后判断TransactionInfo.newTransaction是否为true外部为true拿到ThreadLocal中的connection进行提交 情况二当传播行为是创建新的事务 把外层方法事务相关的事务信息包括connection、隔离级别、是否只读…暂存到TransactionInfo中同时会把ThreadLocal中的事务信息置空创建新的connection返回事务状态信息TransactionInfo.newTransactiontrue)即新事务并放入ThreadLocal当中内部被调用的事务方法往下执行执行完后判断TransactionInfo.newTransaction是否为true⇒是⇒于是提交判断是否暂存了事务 ⇒ 是⇒ 再把上面暂存的外部方法的事务信息放回ThreadLocal中内部被调用的事务方法执行完成外部事务方法接着执行执行完后判断TransactionInfo.newTransaction是否为true外部为true拿到ThreadLocal中的connection进行提交 Q7、Spring多线程事务能否保证事务的一致性 问题分析两个事务方法A和B在两个线程中对应的事务能否同时提交或回滚 答案 Spring不支持因为Spring事务信息存于ThreadLocal中的Connection一个线程永远只能有一个事务所以无法实现两个事务的一致性。可以通过编程式事务自己控制或者分布式事务来解决二阶段提交的方式。 Q8、Spring事务失效的原因 Spring事务底层是基于数据库事务和AOP机制因此参考AOP失效可以知道Spring事务失效的原因 答案 方法的内部调用导致事务传播失效 方法是private会失效解决: 改成public目标类没有配置为Bean也会失效 解决: 配置为Bean交给Spring管理自己捕获了异常 解决: 不要捕获处理使用cglib动态代理但是Transactional声明在接口上面 后面几种本质上是使用不当导致的失效。
http://www.tj-hxxt.cn/news/219082.html

相关文章:

  • 宁波网站建设推广公司郑州哪家做网站好
  • 做网商必备网站外贸公司网站建设 重点是什么意思
  • 相亲网站用什么做的网站销户说明
  • 网站开发广州今东外贸人才网
  • 做图模板网站有哪些内容wordpress还原明文密码
  • 如何在国外建设网站软件开发模型对比
  • 云服务器做网站要备案吗网站做漏洞扫描费用
  • 颍上县建设局网站做一张网站图多少钱
  • 电子商务网站建设客户需求调查表杭州网络推广专员
  • 免费com域名网站免费模板的软件
  • 黄埔网站开发企联网站建设
  • 携程网站建设项目交换友情链接的方法
  • php电商网站开发贴吧农业信息网站建设意义
  • 公司网站建设亚运村重庆微信网站作公司
  • 深圳市网站建设单位十佳wordpress语言编程吗
  • 山东济南seo整站优化企业邮箱号码
  • 可以做游戏可以视频约会的网站网站备案一般要多久
  • 个人网站示例传奇游戏网站怎么做
  • 中国建设银行招投标网站包头 网站建设
  • 网站出现乱码怎么办照片生成视频制作软件
  • 深圳旅游公司网站天津建设工程信息网欧美小镇农贸市场
  • windows搭建网站多少钱要交税
  • 墙外必去的网站易点租电脑租赁官网
  • 漯河哪个网站推广效果好想学网站建设优化去哪
  • 关于网站建设的书籍手工制作折纸
  • 中兴建设有限公司网站系统软件有哪些?
  • 潍坊市住房和城乡建设局官方网站godaddy服务器做网站
  • 抚州市住房和城乡建设局网站网站上动态图片怎么做
  • 做展示型企业网站交易链接大全
  • 徐州建站软件响应式网页设计案例实现与分析