对EJB事务属性(和注释)有一些很好的解释,例如OpenEJB's。
但有时当我试图用一些没有使用过很多交易资源的人来掩盖这一点时,我看到他们的眼睛开始茫然。
所以我的问题 - 您如何向祖母解释EJB交易属性?
我认为一个人为的例子,类比或简洁的现实用例会有所帮助。
答案 0 :(得分:46)
您可以根据协作来考虑它们。假设你是一名厨师,你可以和十几个烤箱一起工作。你需要烤一些蛋糕。对于此示例,你是被调用的方法,烤箱是交易,而你的老板是来电者。
希望有所帮助。
答案 1 :(得分:13)
我认为根据容器与调用者与EJB方法的交互作为真正的监视器来考虑这一点是有道理的...所以我想使用保镖隐喻在各种不同的场景中。
有关交易属性的详细说明/概述,请参阅this page。
必填(必需@TransactionAttribute)
夜总会
出现在俱乐部,需要一张入场券。如果你没有,它将在门口送给你(购买?)。
交易是TICKET 容器是BOUNCER。
需要新功能(REQUIRES_NEW @TransactionAttribute)
喜剧俱乐部,最少1杯饮料,无需重新入场
出现在俱乐部,没有外面的食物/饮料,你必须把它们留在门口。要进入,每次离开并重新进入时,必须至少购买1杯饮料。
交易是DRINK 容器是BOUNCER 暂停交易是在门口离开。
支持(SUPPORTS @TransactionAttribute)
众议院派对
出现在派对上,允许饮酒。如果你有自己的酒,我们会让你进去,如果你不这样做,我们也会让你进去。
交易是ALCOHOL 容器是主机。
强制性(强制性@TransactionAttribute)
仅限邀请方
出现在派对上,需要一个邀请才能进入:如果你没有,并试图进入,保镖会打电话给当局。
交易是邀请 容器是主机 抛出异常就是要求当局。
不支持(NOT_SUPPORTED @TransactionAttribute)
音乐会,禁止使用相机。
在音乐会上出现,禁止使用相机。你可以把它留在门口,当你离开时把它捡起来。
交易是CAMERA 容器是DOORMAN 暂停交易是在门口离开。
从不(从不@TransactionAttribute)
高中舞蹈
出现在舞会上,禁止饮酒。如果你试图接受它并被抓住,那么监护人就会打电话给当局。
交易是ALCOHOL 容器是CHAPERONE。 抛出异常就是要求当局。