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

cwa*_*ash 21 java transactions java-ee ejb-3.0

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

但有时当我试图用一些没有使用过很多交易资源的人来掩盖这一点时,我看到他们的眼睛开始茫然.

所以我的问题 - 你如何向祖母解释EJB交易属性?

  • 需要
  • RequiresNew
  • 强制性
  • 不支持
  • 支持
  • 决不

我在想一个人为的例子,类比或简洁的现实用例会有所帮助.

Mig*_*ing 47

您可以根据协作来考虑它们.假设你是一名厨师,你可以和十几个烤箱一起工作.你需要烤一些蛋糕.对于此示例,是被调用的方法,烤箱是事务,您的老板是调用者.

  • 要求:如果你的老板告诉你在没有告诉你使用什么烤箱的情况下烤一些蛋糕,你就可以选择一个.最后,你关闭烤箱,确保没有其他人可以使用它.
  • 需要新的:你总是在你选择的免费烤箱上烤蛋糕.如果你正在烘烤一些蛋糕的过程中,而你的老板告诉你再烤一批,你就会打断当前的烘焙过程,去新烤箱里烤一些蛋糕,然后继续烤旧蛋糕.
  • 强制性的:你是一个愚蠢的厨师.你的老板总是要告诉你你必须使用什么烤箱.如果你的老板不告诉你使用什么烤箱,你会大喊"愚蠢!".
  • NotSupported:把它想象成做一个不需要烤箱的甜点.如果你正在烘烤一些蛋糕的中间,你停止,创建甜点,并恢复蛋糕烘烤.
  • 支持:这更适合厨师的助手.你是帮助者.如果主厨要你用烤箱X烤蛋糕,你就是这么做的.如果他要你做甜点,你就是这么做的.与其他问题的主要区别在于,您从不提出任何问题,也不会选择做任何事情.你只需按照订单.
  • 永远不会:这是另一个愚蠢的厨师.如果你的老板在你正在烘烤蛋糕的过程中要求你做一个甜点,你会大喊"我退出了!".没有蛋糕烤过.因此,你的老板必须要小心,只要你在没有烘烤任何蛋糕时烤一些蛋糕.

希望有所帮助.


cwa*_*ash 13

我觉得很有道理思考这个容器与呼叫者的EJB方法作为一个真正的互动方面的监测,所以,我想用一个保镖比喻各种不同的方案.

有关事务属性的详细说明/概述,请参阅此页面.

必需(必需的@TransactionAttribute)
夜总会

出现在俱乐部,需要一张入场券.如果你没有,它会在门口给你(购买?).

交易是TICKET.
容器是BOUNCER.

需要新建(REQUIRES_NEW @TransactionAttribute)
相声,喝1最小,没有再入

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

交易是DRINK.
容器是BOUNCER.
暂停交易是在门口离开.

支持(SUPPORTS @TransactionAttribute)
众议院派对

出现在派对上,允许饮酒.如果你有自己的酒,我们会让你进去,如果你不这样做,我们也会让你进去.

交易是ALCOHOL.
容器是主机.

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

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

交易是邀请.
容器是主机.
抛出一个例外就是致电当局.

不支持(NOT_SUPPORTED @TransactionAttribute)
音乐会,禁止摄像机.

出现在音乐会上,相机是禁止的.你可以把它留在门口,当你离开时捡起它.

交易是CAMERA.
容器是DOORMAN.
暂停交易是在门口离开.

从不(NEVER @TransactionAttribute)
高中舞蹈

出现在舞会上,禁止饮酒.如果你试图接受它并被抓住,那么监护人就会打电话给当局.

交易是ALCOHOL.
容器是CHAPERONE.抛出一个例外就是致电当局.