Я думаю, что имеет смысл подумать об этом с точки зрения взаимодействия контейнера с вызывающей стороной метода EJB как истинного монитора ... поэтому я бы хотел использовать баунсер метафора в различных сценариях.
См. на этой странице для хорошего описания / обзора атрибутов транзакции.
Обязательно (REQUIRED @TransactionAttribute)
Ночной клуб
Появись в клубе, для входа нужен билет. Если у вас его нет, он будет (куплен?) Передан вам у двери.
Транзакция - БИЛЕТ.
Контейнер БУНКЕР.
Требуется новый (REQUIRES_NEW @TransactionAttribute)
Comedy club, минимум 1 напиток, без повторного входа
Появляйтесь в клубе, никакой еды / питья на улице, вы должны оставить их у двери. Чтобы войти, вы должны купить минимум 1 напиток каждый раз, когда уходите, и снова входите.
Транзакция - это НАПИТОК.
Контейнер БОУНКЕР.
Приостановка сделки УХОД В ДВЕРЬ.
Поддержки (SUPPORTS @TransactionAttribute)
Домашняя вечеринка
Появиться на вечеринке, алкоголь разрешен. Мы впустим вас, если у вас есть собственный алкоголь, а если нет, мы вас тоже впустим.
Транзакция - АЛКОГОЛЬ.
Контейнер ХОЗЯИН.
Обязательно (ОБЯЗАТЕЛЬНО @TransactionAttribute)
Пригласительная вечеринка
Приходите на вечеринку, вам нужно приглашение, чтобы войти: Если у вас его нет и вы пытаетесь войти, вышибала звонит властям.
Транзакция - это ПРИГЛАШЕНИЕ.
Контейнер ХОЗЯИН.
Бросить исключение - ВЫЗОВ ВЛАСТЕЙ.
Не поддерживается (NOT_SUPPORTED @TransactionAttribute)
Концерт, камеры запрещены.
Появиться на концерте, камеры запрещены. Вы можете оставить его у двери и забрать, когда уходите.
Транзакция - это КАМЕРА.
Контейнер DOORMAN.
Приостановка сделки УХОД В ДВЕРЬ.
Никогда (НИКОГДА @TransactionAttribute)
Высшая школа танцев
Появляются на танцах, алкоголь запрещен. Если вы попытаетесь войти с ним и поймать, сопровождающий звонит властям.
Транзакция - АЛКОГОЛЬ.
Контейнер ШАПЕРОН.
Бросить исключение - ВЫЗОВ ВЛАСТЕЙ.