В чем разница между JTA и локальной транзакцией?
в чем разница между JTA и локальной транзакцией?
пример, который показывает, когда использовать JTA и когда использовать локальную транзакцию было бы здорово.
4 ответа:
JTA
- Это общий API для управления транзакциями на Java. Он позволяет запускать, фиксировать и откатывать транзакции нейтральным для ресурсов способом. Состояние транзакции обычно хранится в TLS (локальное хранилище потоков) и может быть распространено на другие методы в стеке вызовов без необходимости передачи какого-либо явного объекта контекста. Транзакционные ресурсы могут присоединяться к текущей транзакции. Если в такой транзакции участвует более одного ресурса, то хотя бы один из них должен быть так называемый ресурс XA.A
resource local transaction
- это транзакция, которая выполняется с определенным отдельным ресурсом с использованием его собственного API. Такая транзакция обычно не распространяется на другие методы в стеке вызовов, и вам необходимо передать некоторый явный объект контекста. В большинстве локальных транзакций ресурсов невозможно иметь несколько ресурсов, участвующих в одной транзакции.вы бы использовали локальную транзакцию ресурса в например, низкоуровневый код JDBC в Java SE. Здесь объект контекста выражается экземпляром
java.sql.Connection
. Другими примерами локальных транзакций ресурсов являются разработчики, создающие корпоративные приложения примерно в 2002 году. Поскольку менеджеры транзакций (используемые JTA) были дорогими, закрытыми исходными кодами и сложными вещами для настройки в ту эпоху, люди пошли с более дешевыми и легкими для получения локальных вариантов ресурсов.вы бы использовали транзакцию JTA в основном в любом другом сценарии. Очень простые, небольшие, бесплатные и открытые серверы, такие как TomEE (25 Мб) или GlassFish (35 МБ), имеют поддержку JTA из коробки. Там нет ничего, чтобы настроить, и они просто работают.
наконец, такие технологии, как EJB и Spring, упрощают использование JTA, предлагая
declarative transactions
. В большинстве случаев рекомендуется использовать их, поскольку они легче, чище и менее подвержены ошибкам. И EJB и Весна могут использовать JTA под крышками.
тип транзакции должен быть установлен в " RESOURCE_LOCAL "для приложения Java SE и в" JTA " для приложения Java EE. "RESOURCE_LOCAL" может работать нормально на некоторых веб-приложений, развернутых на Tomcat, но может вызвать проблемы при запуске приложения в среде glassfish.
Если вы работаете с распределенными транзакциями, вы должны использовать "JTA" в качестве менеджера транзакций.