2009-08-05 5 views
4

У меня есть метод, который возвращает много данных, я должен использовать @TransactionAttribute(TransactionAttributeType.NOT_SUPPORTED) для этого метода. Метод выполняет запрос JPA, загружает полное содержимое таблицы (около 1000 строк).EJB 3 Атрибут транзакции для метода только для чтения

+0

Безфакторный боб возвращает или просто обрабатывает 1000 строк? –

+0

просто возвращает, загружает из базы данных и возвращает –

ответ

3

Клиент этого метода - это уже в транзакции? Когда вы используете NotSupported, транзакция вызывающего абонента будет приостановлена. Если бы я не сказал, просто поставьте Never как тип транзакции. Никогда не лучше, поскольку звонящие знают, что они не должны вызывать этот метод изнутри транзакции. Более прямой контракт.

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

2

Я бы хотел не согласиться с тем, что редко бывает, что у пользователя нет транзакции в почти все системы. Наилучшим подходом является использование НЕ ПОДДЕРЖИВАЕТ, чтобы транзакция была приостановлена, если вызывающий абонент уже в какой-либо транзакции. НИКОГДА не вызывает беспокойства, если у вас нет серии вызовов, все из которых не относятся к зоне «ОПЕРАЦИЯ». Короче говоря, НЕ ПОДДЕРЖИВАЕТСЯ тип, который следует использовать.

Смежные вопросы