Java EE,事务在EJB中意味着什么?

时间:2015-10-13 00:43:32

标签: java-ee transactions ejb transactional stateless

我是Java EE世界的初学者,我遇到了EJB的问题,实际上我刚刚学习了无状态EJB,我将它用于我的DAO,其中注入了EntityManager并做了一些CRUD,但我我不知道关于他们的任何其他事情,我读过他们的一个主要优点是他们的交易"或类似的事情,我做了很多研究,但我仍然无法理解这意味着什么。

你能否告诉我们为什么有些人讨厌EJB,他们不喜欢什么?什么是"交易"事情?我应该每次都使用无状态作为DAO而不是POJO吗?

或者,如果您有任何有用的初学者链接,请提前感谢。

1 个答案:

答案 0 :(得分:2)

简单地说,为了模拟交易,程序可能需要执行多个步骤。例如,银行计划可能会将资金从一个帐户转移到另一个帐户。它将包含以下伪代码中列出的步骤:

begin transaction
    checking first account
    take money
    send money
    compute and save result
    update history log
commit transaction

这五个步骤都必须完成,或者根本不完成。否则,数据完整性就会丢失。

交易只能以两种方式结束:

- 提交

- 回滚。

当事务提交时,其语句所做的数据修改都将永久保存。如果事务中的语句失败,则事务回滚,撤消事务中所有语句的影响。

而EJB正在为我们做这些困难的事情。 :)

我在这里学习了很长时间http://www.coreservlets.com/

更新1

与EJB事务相关的一些链接

EJB's going deeper

Controlling transactions

Bean managed transactions