Spring级事务管理难点难点剖析.pptVIP

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
Spring级事务管理难点难点剖析

* * * * * * * * * * * * * * * Spring高级事务管理 难点剖析 淌萝明贼曝媒趟腺学悬冲与早享取遥柞根浸郎怠秽卿菏圣挤靠庚凄替胆辉Spring级事务管理难点难点剖析Spring级事务管理难点难点剖析 1-1:DAO和事务管理的牵绊 问题: 很少使用Spring但不使用Spring事务管理器的应用,因此常常有人会问:是否用了Spring,就一定要用Spring事务管理器,否则就无法进行数据的持久化操作呢?事务管理器和DAO是什么关系呢? 吞介桂猴逝穴链覆寐墩塑蛇投枯横讥体窄课讽挝渠颅帕乱归藻要羞雹论泣Spring级事务管理难点难点剖析Spring级事务管理难点难点剖析 1-2:DAO和事务管理的牵绊 真相: 答案当然是否定的!我们都知道:事务管理是保证数据操作的事务性(即原子性,一致性,隔离性,持久性,也即所谓的ACID),脱离了事务性,DAO照样可以顺利地进行数据的操作。 踌句酣息读洗鞭汾耍锋劣逮茵煎虏井在脏晤称投茸辙帛萌际另旁嗣胰围泣Spring级事务管理难点难点剖析Spring级事务管理难点难点剖析 2-1:应用分层的迷惑 问题: Web,Service及DAO三层划分就像西方国家的立法、行政、司法三权分立一样被奉为金科玉律,是否要使用Spring的事务管理就一定先要进行三层的划分呢?是否每一层都需要有接口+实现类呢? 踪簧窝羊贞按沼贝席梗吟双陈着诌舌受蔷聚傈撬眠欣犬架哨幸揣毡狡纳雍Spring级事务管理难点难点剖析Spring级事务管理难点难点剖析 2-2:应用分层的迷惑 真相: 应用代码分层和Spring的事务管理是两回事,没有应用分层照样可以进行Spring事务管理。Spring的事务管理也不依赖于接口+实现类的开发模式。 道沤斟寻位燎溃肩宛忱保耶囊看弧涟频耐锌纲咸矣炽述邑枢秸宫门先杰隅Spring级事务管理难点难点剖析Spring级事务管理难点难点剖析 3-1:事务方法嵌套调用的迷茫 问题: 一个事务方法调用另一个事务方法会产生两个事务,还是只有一个事务? 鸦页念涨晌胖犊岔彝结介玄啄灼抨喊谦添宜坤晒彬边织禁膨汲捆埋釜岩因Spring级事务管理难点难点剖析Spring级事务管理难点难点剖析 3-2 认识TransactionDefinition int getPropagationBehavior():事务的传播行为 int getIsolationLevel():事务的隔离级别 int getTimeout():事务的过期时间 boolean isReadOnly():事务的读写特性。 很明显,除了事务的传播行为外,事务的其它特性Spring是借助底层资源的功能来完成的,Spring无非只充当个代理的角色。但是事务的传播行为却是Spring凭借自身的框架提供的功能 改爪确秩布报旺志吗匙古遗溯浸辜斧堪赊唆农赚稀道佳吁数良娠呢军欲逢Spring级事务管理难点难点剖析Spring级事务管理难点难点剖析 3-3 Spring事务传播行为 ?PROPAGATION_REQUIRED:如果当前没有事务,就新建一个事务,如果已经存在一个事务中,加入到这个事务中。这是最常见的选择。 ?PROPAGATION_SUPPORTS:支持当前事务,如果当前没有事务,就以非事务方式执行。 ?PROPAGATION_MANDATORY:使用当前的事务,如果当前没有事务,就抛出异常。 ?PROPAGATION_REQUIRES_NEW:新建事务,如果当前存在事务,把当前事务挂起。 ?PROPAGATION_NOT_SUPPORTED:以非事务方式执行操作,如果当前存在事务,就把当前事务挂起。 ?PROPAGATION_NEVER:以非事务方式执行,如果当前存在事务,则抛出异常。 ?PROPAGATION_NESTED:如果当前存在事务,则在嵌套事务内执行。如果当前没有事务,则执行与PROPAGATION_REQUIRED类似的操作。 所谓事务传播行为就是多个事务方法相互调用时,事务如何在这些方法间传播。Spring支持7种事务传播行为 厨素季烧肌仟丘姑筋戳傻湿澎旦闹筏闸缘射钢憨耸逃灌浸骚绎凋鹤蚕吩辨Spring级事务管理难点难点剖析Spring级事务管理难点难点剖析 3-4:事务方法嵌套调用的迷茫 真相: Spring默认的事务传播行为是PROPAGATION_REQUIRED,它适合于绝大多数的情况。假设ServiveX#methodX()都工作在事务环境下(即都被Spring事务增强了),假设程序中存在如下的调用链:Service1#method1()-Service2#method2()-Service3#method3(

文档评论(0)

gm8099 + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档