文档章节

EAServer 区分数据库事务和组件事务

会哭的鳄鱼
 会哭的鳄鱼
发布于 2017/06/05 00:13
字数 572
阅读 9
收藏 0

我们在做PB的两层开发时候,总是自己控制数据库事务的提交和会滚。没有办法,我们只能这样操作。

默认情况下,在pb中,数据库事务是从第一句SQL语句开始的,直到显示执行commit或则rollback,另外,我们可能除了使用sqlca这一系统自动定义的数据库事务对象以外,可能会自己再创建一个或则几个数据库事务对象以操作不同的数据库。

到了EAS下,我们不能再用这样的思路考虑问题了。

很多人总是试图在组件中使用commit或则rollback来控制数据库的提交和会滚,其实,在EAS下,组件中执行commit和rollback根本不会起到任何作用,EAS下,会自动将这两句放弃而不真正执行,之所以还可以在组件中写这两句,主要是为了让早期的两层的系统能顺利地移植到三层上来。另外,在组件中写commit和rollback,为非是为了给自己的代码增加一些信心罢了。

在组件中,数据库事务已经被组件事务接管,对于客户端来说,如果使用有状态组件,则客户端或组件中可以控制组件事务的提交和会滚,而不能控制数据库事务的提交和会滚。

如果是无状态组件,则当客户端调用完一个函数后,EAS将自动根据该组件的完成情况,决定是提交组件事务还是会滚组件事务。也就是说,无状态组件不用显式调用setcomplete()或则setabort(),但然,你也可以显示调用。

如果涉及到数据库的操作,不管是有状态组件还是无状态组件,你都要在发布组件的时候,选择组件事务为“需要事务”,否则,一旦EAS操作数据库失败,会滚组件事务的时候,客户端将会接受到一个TRANSACTION_ROLLACK的异常。很多人都以为是EAS的BUG,其实是对组件事务和组件的生命周期不理解造成的。

© 著作权归作者所有

共有 人打赏支持
会哭的鳄鱼
粉丝 6
博文 53
码字总数 52813
作品 0
郑州
技术主管
如何区分 try-with-resources 的异常

在使用 try-with-resources 的时候碰到一些关于异常的问题。如下代码: try (Connection conn = ...) { doSomethong(); } 在处理数据库的时候,声明一个数据库连接的资源。在处理数据库操作的...

拉轰的萝卜
2015/12/19
56
0
EntityFramework 6.x多个上下文迁移实现分布式事务

前言 自从项目上了.NET Core平台用上了EntityFramework Core就再没碰过EntityFramework 6.x版本,目前而言EntityFramework 6.x是用的最多,无论是找工作而言还是提升自身技术而言皆自身收益,...

jeffcky
2017/09/24
0
0
jfinal中对分布式事务的支持

@JFinal 你好,想跟你请教个问题:在实际项目过程中,用到了quartz组件。为了保证quartz组件中任务额事务与service层事务在同一事务控制中,使用配置文件将quartz组件的事务控制交由应用服务...

qiran
2015/06/24
735
1
即将发布bbossgroup-2.0 rc版本

即将发布bbossgroup-2.0 rc版本,敬请大家届时关注。 bbossgroup-2.0 rc较之以前的版本,功能更加稳定,更加可靠。而且增加了一些新的功能特性: 2.0版本的aop框架新增特点: 较之以前的版本...

bboss
2010/06/25
0
0
无法加载 DLL“oramts.dll”: 找不到指定的模块。 (异常来自 HRESULT:0x8007007E)

最近在做一个小项目,语言VS2005,C#,数据库Oracle9i,但是为了兼容以前数据库SqlServer2005,以便于数据库版本的切换,事务中,仍然使用 System.Transaction.Transcope的分布式事务,但是事务调试时...

zting科技
2017/01/12
0
0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

弹性工作制的魔咒

简评:你找到了一份完美的工作 —— 可以提前离开公司,还可以在晚上从家里回复邮件。既然如此,你为什么还会有那么强的负罪感呢? 或许是弹性工作制魔咒在作祟。 很多享受弹性工作制的人会始...

极光推送
刚刚
0
0
KAFKA介绍(分布式架构)

Kafka是一个分布式的、可分区的、可复制的消息系统。它提供了普通消息系统的功能,但具有自己独特的设计。这个独特的设计是什么样的呢? 首先让我们看几个基本的消息系统术语: Kafka将消息以...

明理萝
6分钟前
0
1
os::NodeHandle::subscribe回调函数绑定对象

void Foo::callback(const std_msgs::Empty::ConstPtr& message){}Foo foo_object;ros::Subscriber sub = handle.subscribe("my_topic", 1, &Foo::callback, &foo_object); 参考: ht......

itfanr
7分钟前
0
0
React16.4 开发简书项目 从零基础入门到实战

React16.4 开发简书项目 从零基础入门到实战 关注我的订阅号下载 React16.4 开发简书项目 从零基础入门到实战

蜗牛奔跑
10分钟前
0
0
day57-20180815-流利阅读笔记-待学习

社恐怎么办?这个漫画或许能治愈你 毛西 2018-08-15 1.今日导读 近日,芬兰漫画家卡罗利娜·科尔霍宁创作的绘本《芬兰人的噩梦》在中国大火。一时间书中的主人公马蒂成为了人们茶余饭后热议的...

aibinxiao
14分钟前
3
0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

返回顶部
顶部