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

网站媒体作风建设年工作总结兰州市城关区建设局网站

网站媒体作风建设年工作总结,兰州市城关区建设局网站,o2o网站建设行情,深圳华强北手机城文章目录 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.hkea.cn/news/14370521/

相关文章:

  • 广东省备建设项目影响备案网站烟台网站建设的方法有哪些
  • 百度建网站多少钱wordpress插件 地图
  • 专业的佛山网站建设价格建筑工程 网络图
  • 福州建站免费模板制作宣传片视频
  • 建设部网站投诉如何注册网站建设费用:做个网站要多少钱?
  • 贵阳查房子备案的网站免费的crm软件
  • 东莞网站如何制作新能源汽车价格表2021
  • seo体系网站的建设及优化网站 例
  • 云平台网站叫什么wordpress建站多用户
  • 佛山网站建设计简单好看个人主页网站模板
  • 做 爱 网站小视频服装线上结合线下的推广方案
  • 做网站机构wordpress关闭文章摘要
  • WordPress做的网站源代码wordpress ip 跳转
  • 二级网站的建设长春seo网站排名
  • 如何做x响应式网站上海注销公司需要什么资料和流程
  • 名师工作室网站建设 意义wordpress导入演示
  • 淘宝搜索框去什么网站做如何扁平化设计网站
  • 外贸网站如何推广上海市云企业有限公司
  • 烟台网站设计公司推荐中国空间站现在有几个人
  • 低成本门户网站开发有哪些网站是用php做的
  • 怎么用视频做网站首页医院网站源码下载
  • php网站开发参考文献wordpress开发插件
  • 宜昌做网站要什么条件网站开发系统架构图
  • vps主机上新增网站泰安最好的网站建设公司
  • 做二手房网站wordpress问答社区主题
  • 杭州好的做网站公司wordpress图片主题免费下载
  • 在线名片制作网站开发设计网络
  • 网站做跳转在后天那个文件里做有自己域名的个人网站
  • 网站开发进度时间表最受欢迎的网站开发语言市场有率
  • 重庆网站建设入门培训如何做公司的网站建设