`
aol_aog
  • 浏览: 16570 次
  • 性别: Icon_minigender_1
  • 来自: 北京
文章分类
社区版块
存档分类
最新评论

事务处理的层次问题

 
阅读更多

最近一直在想一个关于事务处理层次的问题。平时我们在做J2EE应用的时候,习惯把应用分为三个逻辑层次,web层,业务层和持久层,比较经典的 是持久层一般使用dao的设计方式。涉及到数据库相关的事务处理时,很多人也就习惯于将事务处理代码写在dao这一个层次上,也就是持久层这个层次。这样 写对于简单一点的数据库访问没有什么问题,一旦实现复杂一点,牵涉到的业务处理比较繁杂一点时,这种在dao里面处理事务的方法就有点力不从心了。

打个比方,我一个dbDAO接口里面有updateA和updateB两个方法,这两个方法中假设都会同时更新几张表(这种情况很常见),这样就会涉及到 事务处理的问题,在updateA中,我们使用事务进行处理,在updateB中我们也谢了事务处理的语句。现在问题来了,如果一个业务处理要求,如果 updateA成功时,更新updateB,如果失败,那么都需要回滚,这样的话,业务层调用了updateA成功提交之后,updateB却失败了,原 来那个方法就没有办法回滚。当然,我们可以在dao中增加两个没有事务处理的方法来调用,但是请仔细想想,这样合适么?????

不过,你也可以将部分业务实现写到dao中去,这样也可以处理,但是这样业务层和持久层就明显含混不清,失去了分层的意义。

因此我们想到把事务处理放到业务中去。原因很明显,事务处理是业务处理的需要,理应随业务的变化而变化,事务跟底层持久化毫不相干,也就是说dao层根本 不应该出现事务处理的代码。但是如果我们将数据库事务处理代码放到业务层之后,明显感觉有点bad smell的味道。所以我们可以利用AOP框架,例如,SPring,将事务处理单独提炼出来,对业务层进行事务控制。而DAO层由于接收事务处理的任 务,所以任何业务方法都可以放心调用,只有在需要事务的时候对业务方法添加事务即可。

分享到:
评论

相关推荐

    在多层结构中利用事务处理保证数据的一致性

    最后以SQL SERVER和Delphi为例讨论如何在多层结构的各个层次上利用事务处理来实现数据的 一致,既分别在客户端如何利用显式事务处理、在中间层如何利用隐式事务处理、在远程数据库服 务器层如何利用触发器事务处理来...

    事务性工作流中的长事务处理方法研究 (2007年)

    在分析了现有长事务处理方法的不足后,基于事务对象层次网络的定义,该文提出了一种长事务处理的最小原子汇集法,介绍了最小原子事务汇集策略及最小原子范围的确定过程,以一个注塑模具产品开发过程的案例验证了该...

    公司通讯事务处理规定下载

    公司通讯事务处理规定下载拥有着完美的一致性、社会性、明确性和层次性的特性,喜欢公司通讯事务处理规定...该文档为公司通讯事务处理规定下载,是一份很不错的参考资料,具有较高参考价值,感兴趣的可以下载看看

    OLAP(联机分析处理)。

    OLAP的提出引起了很大的反响,OLAP作为一类产品同联机事务处理 (OLTP) 明显区分开来。 当今的数据处理大致可以分成两大类:联机事务处理OLTP(on-line transaction processing)、联机分析处理OLAP (On-Line ...

    【完整版】CICS/6000 应用开发指南

    CICS 建立在操作系统、ISO的分布式计算环境 ( DCE,Distributed Computing Environment ) 和 Encina 服务上,它帮助客户建立三层次结构的联机事务处理应用。CICS 为应用程序开发、通信、恢复、显示、数据管理、...

    管理信息系统开发中若干关键技术的研究(论文)

    这些关键技术分别是多层应用体系结构、多层应用体系结构在Delphi中的实现、在Delphi中如何开发具各容错和负载平衡能力的高级的多层应用体系结构、在多层应用体系结构中的各个层次上如何分别利用显示事务处理、隐式...

    tuxedo6.5.rar

    Tuxedo的基本特征是它的联机事务处理系统,但是,Tuxedo也工作于集成关系型的平面文件,以及层次数据库系统。  相关条目:Connectionless and Connection-Oriented Transactions无连接和面向连接事务;Transaction ...

    使用Spring更好地处理Struts动作

    Spring 支持可插拔的事务管理器,可以给您的事务处理提供更广泛的选择范围。它集成了领先的持久性框架,并且提供一个一致的异常层次结构。Spring 还提供了一种使用面向方面代码代替正常的面向对象代码的简单机制。 ...

    MySql事务无法回滚的原因有哪些

    基本的差别为:MyISAM类型不支持事务处理等高级处理,而InnoDB类型支持。MyISAM类型的表强调的是性能,其执行数度比InnoDB类型更快,但是不提供事务支持,而InnoDB提供事务支持已经外部键等高级数据库功能。 MyIASM...

    数据库原理题库.docx

    这些问题涵盖了数据库的基本概念、数据模型、数据库设计、查询语言、事务处理、性能优化等多个方面。通过回答这些问题,学习者能够巩固对数据库原理的理解,培养数据库设计和管理的能力。 数据库原理题库中的问题...

    数据仓库的概念及特点

    今天的数据库就好比当年的层次数据库和网型数据库,它们面向事务处理;今天的数据仓库就好比是当年的关系数据库,它针对联机分析。所不同的是,今天的数据仓库不必再为联机事务处理的特性而奔忙,由于技术的专业化,...

    揭秘WebSphereProcessServer中SCA组件的事务实现机制

    ApplicationServer的,所以底层天然就具有了强大的事务处理能力。因此在SCA层次上只需要考虑事务的语法是什么,然后在合适的阶段把它映射到WAS的事务上就可以了。本文从SCA容器开始说起,然后介绍SCA的事务模型极其...

    his系统医院信息系统(HIS)

    作为一个完整的HIS系统,至少应包含住院管理子系统,病区管理...一般来说,数据的收集过程与基层科室的事务处理活动相联系;数据的集中处理与分析过程与中层科室的工作任务相联系;决策、支持过程则与高层领导相联系。

    再译:使用struts+spring+hibernate 组装web应

    其实,就算用Java建造一个不是很烦琐的web应用程序,也不是件轻松的事情。当为一个应用程序建造一个构架时有许多...应用程序怎样处理容器级的服务( container level services ),比如事务处理( transactions )?

    城市公交查询系统的设计与实现文献综述

    信息管理系统(Management Information System,简称MIS),是一个由人、计算机及其他外围设备等组成的能进行信息的收集、传递、存储、加工、...层次越往上,事务处理的范围越小,针对的也是比较特殊和非结构化的问题。

    Struts+Spring+Hibernate 整合教程.pdf

    用java 来建立一个很有价值的web 应用不是一个简单的任务。在架构这个应用时要考虑很多的因素 和问题。从更高的层次来看,开发人员面临着关于如何构建用户接口,何处驻留...应用应该如何处理容器一级的服务比如事务?

    SAP R/3 事务码速查手册SAP R/3 事务码速查手册

    SAP R/3 事务码速查手册SAP R/3 事务码速查手册目录 1 CA 交叉应用组件 11 1.1 CA 交叉应用组件 11 1.2 CA-EUR-CNV 本地货币改变 11 1.3 CA-DMS 文档管理系统 14 1.4 CA-CL 分类系统 15 1.4.1 CA-CL-CHR 特性 17 1.5...

    绝对深层次IOC和AOP的理解

    AOP能够将那些与业务无关,却为业务模块所共同调用的逻辑或责任,例如事务处理、日志 管理、权限控制等,封装起来,便于减少系统的重复代码,降低模块间的耦合度,并有利于 未来的可操作性和可维护性。

    zeus:使用 kafka、mongodb 和 spring 进行事件处理

    #Overview 在高层次上,该项目有 3 个部分: 一个“摄取”API,它通过 HTTP POST 接受 JSON 并将其推送到 kafka 队列。 完全异步并且非常快。 一个 kafka 消费者(一个单独的进程),它开始从队列的另一端轮询数据...

    基于层次的最大频繁项集挖掘算法

    根据数据库事务的统计性规律,在最大频繁项集发现算法Apriori及其变种算法的基础上,提出一种新的基于层次的最大频繁项集的发现算法。首先从整体上判断候选集的频繁性,然后在发现最大频繁项集的过程中,通过引入...

Global site tag (gtag.js) - Google Analytics