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