事务基础(1)

一、问题

1需要原子操作

2.网络或机器故障

3.因多用户共享数据 ,所以可能会同时操作同一数据。

二、引出事务来解决问题

1.ACID属性(Atomicity、Consistency、Isolation、Durability)

事务中存在若干参与者:事务性对象(事务性组件)、事务管理器、资源、资源管理器。

三、事务的工作机制

首先研究事务模型。平面(Flat)事务和嵌入式(Nested)事务是最常见的两种事务模型。

EJB事务管理器仅支持平面事务。嵌入式事务对于解决大量的事务性问题提供了很好的解决办法。

EJB规范不强制要求支持嵌入式事务。

其他事务模型:Chained事务、Sagas事务。

事务回滚原因:
1)某个组件接受到无效参数。
2)侵犯了某个系统常量。
3)硬件或软件故障。

   当平面事务的all-or-nothing不行时,嵌入式事务可考虑。
嵌入式事务的特征:子事务可以独立回滚,而不会影响到树中上一级事务的执行。他能够解决著名的旅行商问题。

四、分布式事务
下列场合需要使用分布式平面事务
1.在同一事务中涉及到多个应用服务器。
2.在同一事务中需要完成对多个RDBMS的更新操作。
3.需要在同一事务中完成对数据库的更新、(从目的地)接受消息或发送消息(到目的地)。
4.在同一事务中要操作到多种资源,其中包括遗留系统、若干存储源(比如,数据库、消息Queue、其他遗留系统等)
Two-Phase Commit Protocol,2PC为支持分布式事务提供了重要的支撑,它是被广泛使用的技术。
借助于2PC,事务能够保证操作的持久性。持久性是ACID中的重要属性。
五、Java Transaction API


六、EJB事务
根据界定事务边界方式的不同,事务管理方式分为Bean管理、容器管理、客户控制。
Bean管理方式是最传统的做法。
使用@TransactionManagement来设置EJB组件的事务管理方式。
开发者可在如下类型的客户中启动和结束事务:java Servlet、jsp标签库、单独客户应用、JavaApplet、CORBA客户、其他EJB组件。

如何选择事务管理方式?
Bean管理灵活性最好,能最大程度的控制事务边界
容器管理:简单,可以避免EJB组件客户使用了不合适的事务设置来调用EJB组件。为EJB组件提供者省去许多麻烦。
七、容器管理事务(CMT)
事务属性-6。

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值