JPA / JTA / @Transactional Spring аннотация

Я читаю управление транзакциями с использованием Spring framework. В первой комбинации я использовал Spring + hiberante и использовал API Hibernate для управления транзакцией (Hibenate API). Затем я хотел протестировать с @Transactional annotations @Transactional , и это сработало.

Я смущаюсь:

  1. У JPA, JTA, Hibernate есть свой «собственный» способ управления транзакциями. В качестве примера рассмотрим, использую ли Spring + Hibernate, в этом случае вы использовали бы транзакции «JPA»?

    Как у нас есть JTA, правда ли, что мы можем использовать Spring и JTA для управления транзакциями?

  2. @Transactional – это особенность Spring Framework? Из того, что я понял, эта аннотация является специфичной для Spring Framework. Если это правильно, это @Transactional с помощью JPA / JTA для управления транзакциями?

Я читаю онлайн, чтобы очистить свои сомнения, однако я не получаю прямого ответа. Любые входы будут большой помощью.

@Transactional в случае @Transactional Spring->Hibernate с использованием JPA т.е.

@Transactional Аннотации должны быть размещены вокруг всех операций, которые неотделимы.

Так что давайте возьмем пример:

У нас есть 2 модели, то есть Country и City . Реляционное сопоставление модели « Country и City похоже на одну страну, где могут быть несколько городов, поэтому сопоставление,

 @OneToMany(fetch = FetchType.LAZY, mappedBy="country") private Set cities; 

Здесь Страна сопоставлена ​​с несколькими городами с их ленинностью. Итак, вот роль @Transactinal когда мы извлекаем объект Country из базы данных, тогда мы получим все данные объекта Country, но не получим Set of cities, потому что мы выбираем города LAZILY.

 //Without @Transactional public Country getCountry(){ Country country = countryRepository.getCountry(); //After getting Country Object connection between countryRepository and database is Closed } 

Когда мы хотим получить доступ к Set of Cities из объекта страны, тогда мы получим нулевые значения в этом Set, потому что объект Set, созданный только этим Set, не инициализируется с данными для получения значений Set, которые мы используем @Transactional т. @Transactional

 //with @Transactional @Transactional public Country getCountry(){ Country country = countryRepository.getCountry(); //below when we initialize cities using object country so that directly communicate with database and retrieve all cities from database this happens just because of @Transactinal Object object = country.getCities().size(); } 

Таким образом, в основном @Transactional – это услуга, которая может выполнять множественный вызов в одной транзакции без закрытия соединения с конечной точкой .

Надеюсь, это поможет вам.

  • Использует ли атрибут Spring @Transactional собственный метод?
  • Interesting Posts
    Давайте будем гением компьютера.