- 浏览: 229615 次
- 性别:
- 来自: 广州
文章分类
最新评论
-
thebye85:
引用 另外一个需要注意的问题,就是SessionMap和隐藏对 ...
WebWork深度探索之Session -
lanxiaoshuang:
写的真好
说的都是概念——有关编程范式 -
lhz:
grep unique wc你需要的只是这么几个小工具而已
努力做个Pragmatic Programmer
Transaction不管在J2EE还是.NET领域中都是相当重要的一个组成部分。尽管很多与Transaction相关的概念在两个不同的平台中都是相通的,但是它们在Transaction的实现方面却有着很多的不同。想对.NET下的Transaction有更深入了解的朋友,可以参考idior兄写的Transaction in ADO.net 2.0。在以下的篇幅里面,我就J2EE中与Transaction相关的几个概念做些讲述。
1.什么是Transaction?所谓Transaction是指一系列不可分割的改动数据库的操作。在这个解释中,有三个关键词:一系列,不可分割以及改动。仅仅是一个改动数据库的操作是没有Transaction可言,只有“一系列”操作(一组SQL语句)才可能组成Transaction;“不可分割”就意味着一致性和完整性,要么这一系列操作全部commit,要么就全部rollback;如果一系列的操作只包含enquiry操作,那么这些操作也不是Transaction。
2.在J2EE中,Transaction主要有几大类,具体有几种?在J2EE中,Transaction主要有Bean-Managed Transaction和Container-Managed Transaction两大类。其中在Bean-Managed Transaction中还会分为JDBC Transaction和JTA Transaction两种。
3.什么是JDBC Transaction?它有怎样的特点?JDBC Transaction是指由Database本身去管理的事务。其最大的特点就是通过显示调用Connection接口的commit和rollback方法来完成事务的提交和回滚。事务结束的边界是commit或者rollback方法的调用,而开始的边界则不是那么明显了,它会开始于组成当前事务的所有statement中的第一个被执行的时候。具体代码如下:
Connection conn = getConnection();
public void transfer(Currency amount, Account fromAccount, Account toAccount) throws CreditException {
try {
conn.setAutoCommit(false);
depositToAccount(conn, toAccount, amount);
withdrawFromAccount(conn, fromAccount, amount);
conn.commit();
} catch (Exception e) {
try {
conn.rollback();
throw new CreditException(e.getMessage());
} catch (SQLException e1) {
throw new CreditException(e.getMessage());
}
}
}
}
4.什么是JTA Transaction?它有怎样的特点呢?JTA Transaction是指由J2EE Transaction manager去管理的事务。其最大的特点是调用UserTransaction接口的begin,commit和rollback方法来完成事务范围的界定,事务的提交和回滚。JTA Transaction可以实现同一事务对应不同的数据库,但是它仍然无法实现事务的嵌套。具体的代码如下[1]:
UserTransaction ut = context.getUserTransaction();
try {
ut.begin();
updateChecking(amount);
machineBalance -= amount;
insertMachine(machineBalance);
ut.commit();
} catch (Exception ex) {
try {
ut.rollback();
} catch (SystemException syex) {
throw new EJBException
("Rollback failed: " + syex.getMessage());
}
throw new EJBException
("Transaction failed: " + ex.getMessage());
}
}
5.什么是Container-Managed Transaction?它又有怎样的特点呢?Container-Managed Transaction,顾名思义,就是由Container负责管理的Transaction,当然这样Transaction是出现在EJB的范畴中。Container-Managed Transaction最大的特点是不需要显式界定事务的边界,也不需要显式的提交或者回滚事务,这一切都由Container来替我们完成。我们需要做的就是设定在一个Bean中,哪些方法是跟事务相关的,同时设定它们的Transaction Attribute既可。
Transaction的Scope是相当重要的,特别是在一个Bean的方法中调用另外一个Bean的方法。为了便于说明问题,我们把这两个方法分别称为methodA和methodB。当methodA调用methodB的时候,methodB在事务的层面上对调用者methodA有怎样的限制(methodB中是否存在事务)以及methodA如何在事务的层面上实现对methodB的调用(是否需要重新创建一个新的事务来处理methodB的调用)都需要通过Transaction Attribute来设定的。具体的Transaction Attribute有以下六种:Required,RequiresNew,Mandatory,NotSupported,Supports和Never。有关Transaction Attribute的介绍,可以参阅J2EE Tutorial中关于Container-Managed Transaction的介绍。
[1] 代码来自SUN的J2EE Tutorial中关于Bean-Managed Transaction的介绍
发表评论
-
在String的面前丢脸
2004-06-18 00:39 1273重返C++的世 ... -
Summary of function parameter
2004-07-14 02:33 1159对C++这位入 ... -
此Vector非彼Vector
2004-08-05 15:51 1059在学习STL的过程中,我发现了一个熟悉的面孔— ... -
模板——泛型和STL的基础
2004-08-07 01:01 1341所谓泛型,从字面上可以猜想,就是泛化的类型(型 ... -
让人头痛的Vector(提问篇)
2004-08-07 16:55 1236在写完了此Vector非彼Vector这篇随笔 ... -
我该怎样shuffle呢
2004-08-10 01:47 1214在STL的Algorithm中有着这样的一种算 ... -
WebWork初体验
2004-08-11 17:43 1317在这篇ASP.NET ... -
WebWork深度探索之盲人摸象
2004-08-12 23:54 1158昨天尝试着利用WebWork做了一个小功能[1 ... -
WebWork深度探索之号外
2004-08-14 09:03 1059昨天开始对WebWork进行了一些初步的探索[ ... -
WebWork深度探索之标签库
2004-08-15 00:28 1538由于WebWork本身提供了一套自定义的标签库 ... -
什么是Law of Demeter
2004-08-15 14:22 1248今天一如昨日,继续对WebWork进行小打小闹 ... -
所谓的Dumb Question
2004-08-15 17:16 1042为了能够更 ... -
WebWork深度探索之标签库(续)
2004-08-16 15:58 1137昨日对WebWork的标签库进行了小小的研究[ ... -
WebWork深入探索之初见端倪
2004-08-19 16:35 928使用WebWork进 ... -
建网站的小Tips
2004-08-20 23:58 1042这几天都在忙着做一个小网站,从网页美工到后台处 ... -
URL与RequestDispatcher
2004-08-21 23:58 1009今天照例继续自己的网站建设之旅,原本以为可以大 ... -
WebWork深度探索之Pitfall
2004-08-25 14:31 983在使用WebWork进行开发的过程中,她的种种 ... -
WebWork深度探索之Session
2004-08-26 15:38 1530昨天上午刚 ... -
搞笑的textarea标签
2004-08-31 18:17 1589很久没有用 ... -
两天四疑问
2004-09-03 10:56 10059月份的前两天,我仍然做着网站开发的工作。在开 ...
相关推荐
数据库系统及应用实验报告(一)是关于 SQL Server 2000 的操作环境实验报告,旨在了解 SQL Server 2000 及其主要功能、工具和实用程序、系统数据库及样本数据库,并掌握企业管理器和查询分析器的基本操作方法。...
1. **性能指标**:选择`Database-Tranaction/sec`作为分析指标,观察其随时间的变化趋势。 2. **数据可视化**:绘制CPU利用率和网络流量的图表。 3. **趋势分析**:使用Excel工具,添加趋势线并显示公式,如Y = 0....
ABAP/4(Advanced Business Application Programming) SAP/R3, 4GL, Visual BasicJAVA, third-generation , C,PASCAL , (Program Structure Module) : 1.Sequential coding ... , database tranaction process
8.18发烧购物节活动SOP - 电商日化行业+电商引流转化(5张子表全案)
网页设计期末大作业基于HTML+CSS的仿中国银行网站源代码.zip,个人经导师指导并认可通过的高分大作业项目,评审分98分,项目中的源码都是经过本地编译过可运行的,都经过严格调试,确保可以运行!主要针对计算机相关专业的正在做大作业的学生和需要项目实战练习的学习者,资源项目的难度比较适中,内容都是经过助教老师审定过的能够满足学习、使用需求,如果有需要的话可以放心下载使用。 网页设计期末大作业基于HTML+CSS的仿中国银行网站源代码.zip网页设计期末大作业基于HTML+CSS的仿中国银行网站源代码.zip网页设计期末大作业基于HTML+CSS的仿中国银行网站源代码.zip网页设计期末大作业基于HTML+CSS的仿中国银行网站源代码.zip网页设计期末大作业基于HTML+CSS的仿中国银行网站源代码.zip网页设计期末大作业基于HTML+CSS的仿中国银行网站源代码.zip网页设计期末大作业基于HTML+CSS的仿中国银行网站源代码.zip网页设计期末大作业基于HTML+CSS的仿中国银行网站源代码.zip网页设计期末大作业基于HTML+CSS的仿中国银行网站源代码.zip网页设计期
ntu嵌入式所有周实验文件
一款可以快速借助ChatGPT,快速生成大量原创有深度文章,快速丰富网站内容,完全免费,新建文章标题跟分类后,点击生成即可自动生成文章,生成后可以点击查看文章直达文章界面,分类可以设置不存在的,程序发现不存在会自动新建。
Adobe Camera Raw(RAW处理工具)v17.1.0.mp4
2024圣诞节倒计时页面源码.mp4
MaixPy机械臂井字棋游戏开发源码-最新开发(可比赛用).zip [资源说明] 1、该项目是团队成员近期最新开发,代码完整,资料齐全,含设计文档等 2、上传的项目源码经过严格测试,功能完善且能正常运行,请放心下载使用! 3、本项目适合计算机相关专业(人工智能、通信工程、自动化、电子信息、物联网等)的高校学生、教师、科研工作者、行业从业者下载使用,可借鉴学习,也可直接作为毕业设计、课程设计、作业、项目初期立项演示等,也适合小白学习进阶,遇到问题不懂就问,欢迎交流。 4、如果基础还行,可以在此代码基础上进行修改,以实现其他功能,也可直接用于毕设、课设、作业等。 5、不懂配置和运行,可远程教学 欢迎下载,学习使用!
理工大学本科毕业设计-基于深度学习的行人重识别系统python源码.zip,个人经导师指导并认可通过的毕业设计项目,评审分98分,项目中的源码都是经过本地编译过可运行的,都经过严格调试,确保可以运行!主要针对计算机相关专业的正在做毕业设计的学生和需要项目实战练习的学习者,资源项目的难度比较适中,内容都是经过助教老师审定过的能够满足学习、使用需求,如果有需要的话可以放心下载使用。 理工大学本科毕业设计-基于深度学习的行人重识别系统python源码.zip理工大学本科毕业设计-基于深度学习的行人重识别系统python源码.zip理工大学本科毕业设计-基于深度学习的行人重识别系统python源码.zip理工大学本科毕业设计-基于深度学习的行人重识别系统python源码.zip理工大学本科毕业设计-基于深度学习的行人重识别系统python源码.zip理工大学本科毕业设计-基于深度学习的行人重识别系统python源码.zip理工大学本科毕业设计-基于深度学习的行人重识别系统python源码.zip理工大学本科毕业设计-基于深度学习的行人重识别系统python源码.zip理工大学本科毕业设计-基
感恩母恩母爱如水母亲节主题班会
基于java的同城宠物喂遛系统设计与实现.docx
乱七八糟聚合类工具箱v1.3.86应有尽有高级版.mp4
安卓一木记账v5.8.90解锁VIP绿化高级版.mp4
Comsol经典小案例。 晶格耦合作用结构色,CIE1931计算与绘制。
2021中国新锐品牌发展研究:食品饮料行业报告
YS9082HP_033_HPS1A30C_N38A
LOL英雄联盟2012怀旧网单.mp4
2020林达阳光新城抖音直播售房脚本