Хобрук: Ваш путь к мастерству в программировании

UserTransactionAdapter против UserTransactionImpl

Содержит ли Spring реализацию jta?

Я вижу этот класс UserTransactionAdapter реализует UserTransaction, но javax. transaction.UserTransaction не существует ни в одной весенней банке.

С другой стороны, javax.transaction.UserTransaction существует в библиотеке времени выполнения jboss, но реализация находится в spring jar. И еще одна реализация UserTransaction (из jbossxts-4.17.21.Final-redhat-2.jar): UserTransactionImpl можно найти в jbossxts-4.17.21.Final-redhat-2.jar в папке модулей jboss.

Может кто-то объяснить это мне ?

17.01.2016

Ответы:


1

Нет, у Spring нет собственной реализации JTA. У него есть собственная инфраструктура управления транзакциями, которая независима от API JTA, но у него есть реализация собственного API TransactionManager, который может использовать (делегировать) JTA TransactionManager. Существуют и другие реализации его собственного API транзакций, такие как Hibernate-, JDO-, JPA-, DataSource, но все они делегируют работу по управлению транзакциями базовой инфраструктуре транзакций. Подводя итог, вы можете использовать инфраструктуру управления транзакциями Spring в своем приложении и делегировать JTA TransactionManager, если таковая имеется в вашей среде, но сама Spring не предоставляет реализацию JTA TransactionManager.

Реализация Spring UserTransaction в его классе UserTransactionAdapter предназначена только для адаптации JTA TransactionManager к интерфейсу UserTransaction, потому что, хотя UserTransaction является точным подмножеством интерфейса TransactionManager, сам интерфейс TransactionManager не расширяет интерфейс UserTransaction. Рассматривайте его только как простой вспомогательный класс, он не делает ничего, кроме адаптации одного интерфейса к другому.

17.01.2016

2

Содержит ли Spring реализацию jta?

No.

Я вижу, что класс UserTransactionAdapter реализует UserTransaction, но javax.transaction.UserTransaction не существует ни в одном spring jar.

javax.transaction.UserTransaction — это элемент спецификации JTA, другими словами, это стандартный API. У Spring нет причин включать его.

С другой стороны, javax.transaction.UserTransaction существует в библиотеке времени выполнения jboss.

Действительно, поскольку JBoss является сервером приложений, совместимым с JEE, и поэтому включает в себя стандартные библиотеки JEE (JTA, JPA, JMS,...)

но реализация находится в банке Spring.

Это просто синтаксический сахар для сопоставления UserTransaction с TransactionManager, и это не предназначен для прямого использования в коде приложения.

И еще одна реализация UserTransaction (из jbossxts-4.17.21.Final-redhat-2.jar): UserTransactionImpl можно найти в jbossxts-4.17.21.Final-redhat-2.jar в папке модулей jboss.

Поскольку JBoss реализует спецификацию JTA: это реализация jboss стандартного API UserTransaction.

Может кто-то объяснить это мне ?

Spring предоставляет единый API для очень простого взаимодействия с различными менеджерами транзакций. Вам просто нужно сказать Spring использовать реализацию X или Y в конфигурации. В конце Spring делегирует реальное управление транзакциями выбранной вами реализации. (и для выполнения этого делегирования кажется, что в некоторых сценариях синтаксический сахар «UserTransactionAdapter» требуется внутри Spring)

17.01.2016
Новые материалы

Создание кнопочного меню с использованием HTML, CSS и JavaScript
Вы будете создавать кнопочное меню, которое имеет состояние наведения, а также позволяет вам выбирать кнопку при нажатии на нее. Финальный проект можно увидеть в этом Codepen . Шаг 1..

Внедрите OAuth в свои веб-приложения для повышения безопасности
OAuth — это широко распространенный стандарт авторизации, который позволяет приложениям получать доступ к ресурсам от имени пользователя, не раскрывая его пароль. Это позволяет пользователям..

Классы в JavaScript
class является образцом java Script Object. Конструкция «class» позволяет определять классы на основе прототипов с чистым, красивым синтаксисом. // define class Human class Human {..

Как свинг-трейдеры могут использовать ИИ для больших выигрышей
По мере того как все больше и больше профессиональных трейдеров и активных розничных трейдеров узнают о возможностях, которые предоставляет искусственный интеллект и машинное обучение для улучшения..

Как построить любой стол
Я разработчик программного обеспечения. Я люблю делать вещи и всегда любил. Для меня программирование всегда было способом создавать вещи, используя только компьютер и мое воображение...

Обзор: Машинное обучение: классификация
Только что закончил третий курс курса 4 часть специализации по машинному обучению . Как и второй курс, он был посвящен низкоуровневой работе алгоритмов машинного обучения. Что касается..

Разработка расширений Qlik Sense с qExt
Использование современных инструментов веб-разработки для разработки крутых расширений Вы когда-нибудь хотели кнопку для установки переменной в приложении Qlik Sense? Когда-нибудь просили..