EJb事物介绍

前言

Ejb事物其实就跟我们数据库中学的时候是一样,事物的回滚,他所具有的特性。在前面的文章中我介绍过关于在javaEE中事物的概念,http://blog.csdn.net/dtttyc/article/details/78722773,链接里面是讲解jdbc和事物的概念,在这次的博客中我们讲的是一个宏观的Ejb的事物,然后再连接到我们的链接中间中讲的另一种形式的组件事务


What Ejb事物

我们有的时候会发现出现异常并且事物也没有正常的回滚,最终导致事物的不一致性,所以我们如果才可以让他会滚保证数据的一致性,EJB事物就是解决这个问题的。在Ejb事物中我们分为两种。1容器管理事物,2bean管理事物


bean我们在最初的时候可以分为会话bean,消息bean,实体bean,会话和消息都可以在管理事物中,而实体bean不可以在管理事物中


容器管理服务(CMt ,Container-Managed Transaction)
容器管理服务就是开发人员不用管事物,容器都为开发人员做好了功能,例如启动一个事物,每一个方法都有事物,并一个方法不可以有多个事物存在。由于很多事情cmt都替我们做了,所以我们不需要用commit,begin,abort等语句,所以使用的时候会很方便


容器管理事物的回滚
1如果产生系统异常,那么容器将自动回滚
2由于EJBException作为系统异常,他继承RuntimeException,所以当一个继承RuntimeException的时候Ejb容器会自动回滚
3通过调用EJBContext接口SetRollbackOnly方法,bean方法通知容器回滚该事物


实现过程
1.Ejb容器自动拦截客户请求
2Ejb使用begin语句调用底层事物系统
3这个时候事物已经启动了,当组件业务操作相当于是在事物的包含范围在
4一旦发生异常,ejb组件会通知ejb的容器来实现回滚
5Ejb容器为主要角色,他使用commit或abort语句调用底层事物系统

EJb事物属性的取值
1 Require:该属性是为了标注方法或者组件是是否一直在事物中运行,如何组件是在事物中则运行,如果有一个新组件则让他在一个新的事物运行


2 Requires_New:他总是在新开启的事物中运行,如果这个时候有一个新的则我们可以把原来的事物挂起,然后让开启另一个事物,当这个事物结束的时候,我们再把挂起的事物放下运行,当我们想让事物的回滚不影响客户端的时候可以使用这个Request New


3 Supports:如果某个EJB组件使用了Supports 事务属性,则只有调用它的客户已经启用了事务时,在没有事物的环境下不会开启一个事物


4 Mandatory :Mandatory事物属性要求调用Ejb组件的客户必须是在事务中,如果是非事物的调用则会抛出异常,所以Mandatory是非常安全的。所以他可以组件一定在事务中,并且Mandatory不会像Support一样会自己启动事务


5 NotSupport :如果使用了NotSupport属性,那么他就不会使用事物,如果调用者使用了向关联的事物调用方法,容器就会停止事务,


6 Never :如果ejb组件使用naver事物属性,他就不可以调用事物属性,所以如果调用有事物属性,那么会暂停服务,然后抛出异常


总结

这次学习感觉Ejb不亏是核心什么东西都能跟他挂钩,而且ejb的容器概念也是非常棒!

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

王雪芬-Judy领袖

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值