Подтвердить что ты не робот

Примеры или использование Случаи для объяснения атрибутов транзакции EJB

Есть несколько хороших объяснений атрибутов транзакций EJB (и аннотаций) там, например OpenEJB.

Но иногда, когда я пытаюсь покрыть это тем, кто не работал со многими транзакционными ресурсами, я вижу, что их глаза начинают гладить.

Итак, мой вопрос - как бы вы объяснили атрибуты транзакции EJB вашей бабушке?

  • Обязательно
  • RequiresNew
  • обязательно
  • NotSupported
  • Поддержка
  • Никогда

Я думаю, что надуманный пример, аналогия или краткое практическое применение в реальном мире было бы полезно.

4b9b3361

Ответ 1

Я думаю, что имеет смысл подумать об этом с точки зрения взаимодействия контейнера с вызывающим методом EJB в качестве истинного монитора... поэтому я бы хотел использовать метамоду вышибалы в различные сценарии.

См. эту страницу для хорошего описания/обзора атрибутов транзакции.

Требуется (НЕОБХОДИМЫЙ @TransactionAttribute)
Ночной клуб

Покажите в клубе, нужно билет, чтобы войти. Если у вас его нет, он будет (куплен?), Предоставленный вам у двери.

Транзакция - БИЛЕТ.
Контейнер - BOUNCER.

Требуется новый (REQUIRES_NEW @TransactionAttribute)
Комедийные клубы, 1 пить-минимум, без повторного входа

Покажите в клубе, нет еды/напитка, вы должны оставить их у двери. Чтобы попасть внутрь, вы должны покупать минимум 1 напиток каждый раз, когда вы уходите и возвращаетесь.

Транзакция - это DRINK.
Контейнер - BOUNCER.
Приостановка транзакции - ОТДЫХ НА ДВЕРИ.

Поддержка (SUPPORTS @TransactionAttribute)
Дом вечеринки

Покажите на вечеринке, разрешен алкоголь. Мы позволим вам с этим, если у вас есть свой собственный алкоголь, если вы этого не сделаете, мы тоже вас впустим.

Транзакция - это АЛКОГОЛЬ.
Контейнер - HOST.

Обязательный (ОБЯЗАТЕЛЬНЫЙ @TransactionAttribute)
Участник, приглашенный только для участия

Покажите на вечеринке, вам нужно приглашение ввести: Если у вас его нет, и попытайтесь войти, вышибала вызовет власти.

Сделка - ПРИГЛАШЕНИЕ.
Контейнер - HOST.
Выбрасывание исключения - ЗВОНОК ВЛАСТЕЙ.

Не поддерживается (NOT_SUPPORTED @TransactionAttribute)
Концерт, камеры запрещены.

Показывать на концерте, камеры запрещены. Вы можете оставить его у двери и забрать его, когда вы уйдете.

Транзакция - КАМЕРА.
Контейнер - DOORMAN.
Приостановка транзакции - ОТДЫХ НА ДВЕРИ.

Никогда (НИКОГДА @TransactionAttribute)
Танец средней школы

Покажите на танец, алкоголь запрещен. Если вы попытаетесь войти с ним и пойманы, сопровождающий называет власти.

Транзакция - это АЛКОГОЛЬ.
Контейнер - CHAPERONE. Выбрасывание исключения - ЗВОНОК ВЛАСТЕЙ.

Ответ 2

Вы можете думать о них в терминах Сотрудничество. Скажите, что вы шеф-повар, и у вас есть дюжина печей для работы. Вам нужно испечь некоторые пирожные. В этом примере вы являетесь вызываемым методом, печь - это транзакция, и ваш босс является вызывающим.

  • Обязательный: если ваш босс говорит вам испечь некоторые пирожные, не сообщая вам, какую печь вы используете, вы просто идите вперед и выбираете один. В конце вы закрываете духовку, убедившись, что никто не сможет ее использовать.
  • Требуется новый: вы всегда будете выпекать пирожные на бесплатной духовке, которую вы выберете. Если вы находитесь в середине процесса выпечки некоторых тортов, и ваш босс говорит вам, чтобы выпекать еще одну партию, вы прерываете текущий процесс выпечки, идите и выпекайте несколько пирожных в новой духовке, возобновите выпечку для старых.
  • Обязательный. Вы тупой повар. Ваш босс всегда должен сказать вам, какую печь вы должны использовать. Если ваш босс не говорит вам, какую печь использовать, вы кричите "глупо!".
  • NotSupported. Думайте об этом, делая десерт, который не нуждается в духовке. Если вы находитесь в середине выпечки некоторых пирожных в духовке, вы прекратите это, создайте десерт и возобновите выпечку торта.
  • Поддержка. Это больше подходит для помощника по приготовлению. Вы помощник. Если главный повар попросит вас испечь пирог с печью X, вы просто сделаете это. Если он попросит вас сделать десерт, вы просто сделаете это. Основное отличие в отношении других заключается в том, что вы никогда не задаете никаких вопросов и не хотите ничего делать. Вы просто следуете приказам.
  • Никогда. Это еще один тупой повар. Если ваш босс попросит вас сделать десерт, пока вы находитесь в середине выпечки торта, вы кричите и говорите: "Я ушел!". Никакой пирог никогда не запекается. Поэтому ваш босс должен быть осторожным и попросить вас испечь некоторые пирожные, когда вы не выпекаете торты.

Надеюсь, что это поможет.