Примеры или использование Случаи для объяснения атрибутов транзакции EJB
Есть несколько хороших объяснений атрибутов транзакций EJB (и аннотаций) там, например OpenEJB.
Но иногда, когда я пытаюсь покрыть это тем, кто не работал со многими транзакционными ресурсами, я вижу, что их глаза начинают гладить.
Итак, мой вопрос - как бы вы объяснили атрибуты транзакции EJB вашей бабушке?
- Обязательно
- RequiresNew
- обязательно
- NotSupported
- Поддержка
- Никогда
Я думаю, что надуманный пример, аналогия или краткое практическое применение в реальном мире было бы полезно.
Ответы
Ответ 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, вы просто сделаете это. Если он попросит вас сделать десерт, вы просто сделаете это. Основное отличие в отношении других заключается в том, что вы никогда не задаете никаких вопросов и не хотите ничего делать. Вы просто следуете приказам.
- Никогда. Это еще один тупой повар. Если ваш босс попросит вас сделать десерт, пока вы находитесь в середине выпечки торта, вы кричите и говорите: "Я ушел!". Никакой пирог никогда не запекается. Поэтому ваш босс должен быть осторожным и попросить вас испечь некоторые пирожные, когда вы не выпекаете торты.
Надеюсь, что это поможет.