Разница между UserTransaction и EntityTransaction
название говорит все: в чем разница между UserTransaction
и EntityTransaction
?
мое рудиментарное понимание заключается в том, что UserTransaction
используется, когда требуется JTA (например, для выполнения запросов на множество вещей), и это EntityTransaction
используется, когда требуется только JPA (например, когда запрос является атомарным).
это единственная разница между ними или есть что-то еще?
1 ответов
мое рудиментарное понимание заключается в том, что UserTransaction используется, когда JTA требуется (например, для выполнения запросов множественные вещи), и что EntityTransaction используется, когда JPA требуется только (например, когда запрос является атомарным).
это в основном верно, но ваше описание "нескольких вещей" и "атомарных" немного странно. JTA позволяет разработчику использовать распределенную транзакцию для внесения изменений в кратные ресурсы (database, JMS broker, так далее.) атомарно (все-или-ничего). Если доступен только один ресурс (например, одна база данных), вам не нужен JTA, но транзакция по-прежнему атомарна (все или ничего). Это, например, случай, когда вы используете обычную транзакцию JDBC в одной базе данных.
учитывая UserTransaction
и EntityTransaction
:
- если JPA используется автономно, вы используете
EntityTransaction
чтобы разграничить транзакцию самостоятельно. - если JPA используется в управляемой среде, где он интегрируется с JTA, вы используете
UserTransaction
. TheEntityManager
подключается к диспетчеру распределенных транзакций JTA. Единственная тонкость, о которой я знаю, учитывает приток изменений. КогдаEntityTransaction
используется, JPA знает, что ему нужно смыть изменения. Если транзакция контролируется с помощьюUserTransaction
, Он должен зарегистрировать обратный вызов с помощью JTAregisterSynchronization
, чтобы изменения были сброшены в базу данных до завершения транзакции. Если вы используете EJB с CMT (транзакция, управляемая контейнером), вам даже не нужно использоватьUserTransaction
: сервер приложений запускает и останавливает операции.
вопросы: