解释 EJB 事务属性的示例或用例

2022-09-02 02:28:25

对 EJB 事务属性(和注释)有一些很好的解释,例如 OpenEJB

但有时,当我试图与一个没有使用过许多交易资源的人一起报道这个问题时,我看到他们的眼睛开始眯起。

所以我的问题 - 你会如何向你的祖母解释EJB事务属性?

  • 必填
  • 需求新
  • 命令的
  • 不支持
  • 支持
  • 从不

我认为一个人为的例子,类比或一个简洁的现实世界用例会有所帮助。


答案 1

您可以从协作的角度来考虑它们。假设你是一名厨师,你有十几个烤箱可以使用。你需要烤一些蛋糕。对于此示例,是被调用的方法,烤箱是事务,您的老板是调用方。

  • 必需:如果你的老板告诉你烤一些蛋糕,却没有告诉你你用的烤箱是什么,你就继续选择一个。最后,你关闭烤箱,确保没有其他人可以使用它。
  • 需要新的:您将始终在您选择的免费烤箱上烘烤蛋糕。如果你正在烘烤一些蛋糕的过程中,你的老板告诉你再烤一批,你就中断了目前的烘焙过程,去新烤箱烤一些蛋糕,恢复旧蛋糕的烘焙。
  • 强制性:你是一个哑巴厨师。你的老板总是要告诉你要用什么烤箱。如果你的老板没有告诉你该用什么烤箱,你就会大喊“愚蠢!
  • 不支持:可以将其视为做不需要烤箱的甜点。如果你在烤箱里烤一些蛋糕,你停止它,创造甜点,然后恢复蛋糕烘焙。
  • 支持:这更适合厨师的助手。你是帮手。如果主厨要求你用烤箱X烤蛋糕,你就这样做。如果他要求你做甜点,你就这样做。关于其他问题的主要区别在于,你从不问任何问题,也从不选择做任何事情。你只需服从命令。
  • 从不:这又是一个愚蠢的厨师。如果你的老板要求你在烤蛋糕的时候做甜点,你会大喊大叫,说“我辞职了!没有蛋糕是烘烤的。所以你的老板要小心,只要求你在不烤任何蛋糕的时候烤一些蛋糕。

希望有所帮助。


答案 2

我认为从容器与 EJB 方法调用方作为真正监视器的交互的角度来考虑这一点是有意义的......所以我想在各种不同的场景中使用保镖的比喻

有关事务属性的良好描述/概述,请参阅此页面

必填项 (必填@TransactionAttribute)
夜总会

出现在俱乐部,需要门票才能进入。如果你没有,它将在门口(购买?)给你。

交易就是门票。
容器是保镖。

需要新的(REQUIRES_NEW @TransactionAttribute)
喜剧俱乐部,至少喝1杯,不能重新进入

出现在俱乐部,没有外面的食物/饮料,你必须把他们留在门口。要进入,您必须在每次离开并重新进入时至少购买1杯饮料。

交易就是饮料。
容器是保镖。
暂停交易就是在门口离开。

支持(支持@TransactionAttribute)
家庭聚会

参加派对,允许饮酒。如果您有自己的酒精,我们会让你进来,如果你不这样做,我们也会让你进来。

交易是酒精。
容器是主机。

强制性(强制性@TransactionAttribute)
仅限邀请方

出现在派对上,需要邀请才能进入:如果你没有邀请并试图进入,保镖会打电话给当局。

交易就是邀请。
容器是主机。
抛出异常是调用当局。

不支持(NOT_SUPPORTED @TransactionAttribute)
音乐会,禁止使用相机。

出现在音乐会上,禁止使用相机。你可以把它留在门口,当你离开时把它捡起来。

交易是相机。
容器是门卫。
暂停交易就是在门口离开。

从不(从不@TransactionAttribute)
高中舞蹈

出现在舞会上,禁止饮酒。如果你试图进入它并被抓住,陪同人员会打电话给当局。

交易是酒精。
容器是伴侣。抛出异常是调用当局。


推荐