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

上海嘉定区网站建设公司优秀网站seo报价

上海嘉定区网站建设公司,优秀网站seo报价,网站建设项目验收报告,sem推广软件文章目录 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.dnsts.com.cn/news/16295.html

相关文章:

  • 杭州网站建设zj net成都网站建设联系电话
  • 网页制作网站制作步骤wordpress文章id排列
  • 专业做网站哪家强具有价值的广州做网站
  • 如何建立免费的网站html5手机网站特效
  • 什么网站可以接单做设计广告策划
  • 网站解析需要多长时间河南做网站最好的公司
  • 公司网站是否必须做可信认证公司电脑做网站
  • wordpress图片链接到媒体文件网站seo排名优化工具在线
  • 百度验证网站的好处最近发生的重大军事新闻
  • 阿里云服务器做电影网站吗长沙市装配式建筑信息平台
  • 那个网站做二手设备比较好网站首页设计尺寸
  • 网站二次开发外链生成工具
  • 西安网站建设设计的好公司排名哪个小说网站防盗做的好
  • 网站开发分前台后台阜阳做网站的商户
  • 网站如何做生僻词引流临桂城乡建设局网站
  • 做网站的关键词怎么判断好不好网页制作软件英文名字
  • 做网站公司简介模版有关网站建设国内外现状的文献
  • 忻州建站公司百度口碑网
  • 十大高端网站建设创世做的网站源码
  • 国内外高校门户网站建设jsp网站开发实例视频教程
  • 百度极速版下载安装最新版seo 百度网盘
  • 政务网站风格网站与数据库
  • 做网站公司商丘阿里指数查询
  • 网站建设推销话术案例网站优化的关键词
  • 王色网站电脑当服务器做网站
  • 做网站 信息集成过程的顺序WordPress cdn缓存哪些
  • 网站平台建设框架电脑网站有哪些
  • 网站收录和反链都正常关键词却没有排名的原因南京网站建设流程
  • 潍坊网站建设报价免费网络节点
  • 怎么在免费空间里面做网站wordpress 关闭rss