事务—EJB事务(CMT)

本文介绍了EJB3的事务特性,包括ACID原则和一致性的重要性。容器管理事务(CMT)通过声明式方式进行事务管理,容器负责开始、提交或回滚事务。CMT提供了几种事务属性类型,如REQUIRED、REQUIRED_NEW等,用于控制事务的边界和行为。CMT的事务管理机制允许通过EJBContext设置回滚标志,以在方法结束后决定是否提交事务。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

EJB3的事务与安全

EJB3的是事务也符合ACID,即原子性、一致性、隔离型、持久性。这些特性与数据库事务一致,需要强调的是一致性,在事务开始前,系统是处于一种遵守业务规则和约束的一致状态下,那么在事务提交或回滚之后,系统也必须维持这种一致性状态。在事务进行过程中不必处于不一致性状态,事务在这里就像一个沙箱(sand-box)。

在EJB中,事务也具有隔离级别的控制,但一般不用通过EJB容器来控制,而是在数据库资源这一级别来进行控制。

要知道在EJB容器中,代码层面的所有操作最终都是转化为两级的数据库操作,比如锁定和解锁数据库中的某行或某张表。事务日志来反映事务的变化,开始事务日志代表事务的开始,应用日志代表以提交该事务来结束,相反放弃日志就代表回滚事务而结束。

资源管理器(Resource Manager)的概念是管理特定某种资源的事务的组件。这个概念不仅包括关系数据库系统,也可以使消息服务器或其他业务系统。

如果只涉及一种单一资源的事务就称为local transaction本地事务,相反大多数企业应用都是需要涉及多种不同的资源。这时候就需要一种类型的组件来管理事务中多种资源,这个组件称为事务管理器(Transaction Manager),它在多个管理各自资源事务的资源管理之间进行协调和控制。

分布式的事务管理是通过一种称为两段式提交(two-phase commit)的机制来完成。现在最为流行的分布式事务协议是XA协议(XA Protocol),JavaEE就是通过该协议来完成分布式应用中的事务管理。

事务管理

JavaEE中事务使用JTA(Java Transaction API,是建立在Java Transaction Service之上的服务),即javax.tranaction.UserTransaction接口,容器在后台会自动管理大多数事务细节,EJB开发者只需控制开始和停止事务、建立事务边界(transaction boundary)以及是否提交/回滚业务即可。

在EJB3中提供了两种具体的事务方式,即容器管理的事务(Container

评论 6
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值