Spring Data Jpa / Поведение транзакции Hades - PullRequest
0 голосов
/ 15 апреля 2011

С Ссылка на данные пружины JPA (ранее Аид ),

методы CRUD в экземплярах репозитория являются транзакционными по умолчанию.

Если метод охватывает более одного репозитория, пример:

@Transactional
public void addRoleToAllUsers(String roleName) {
    Role role = roleRepository.findByName(roleName);
    for (User user : userRepository.readAll()) {
        user.addRole(role);
        userRepository.save(user);
    }
}

Состояния ссылки

Конфигурация транзакции на хранилища будут игнорироваться тогда как конфигурация внешней транзакции определяет фактический используемый.

Поведение внутренних транзакций будет игнорироваться является поведением Spring по умолчанию или фактически явно обрабатывается Spring Data JPA?

Ответы [ 3 ]

2 голосов
/ 15 апреля 2011

Это поведение по умолчанию.

Как видите, методы JpaRepository аннотируются как @Transactional с распространением по умолчанию (REQUIRED), и это нормальное поведение для этого типа распространения (см. 10.5 .7 Распространение транзакции ).

1 голос
/ 04 июля 2011

@Transactional в JpaRepository / классе реализации приведет к тому, что эти методы просто будут принимать участие во внешней транзакции по умолчанию.Поэтому, если вы думаете, что «пренебрежение» является вводящим в заблуждение словом, не стесняйтесь открыть для него JIRA (я думаю, что это в некоторой степени;)).

Если вы хотите изменить конфигурацию транзакций для методов CRUDВы можете сделать это, просто изменив метку метода CRUD внутри вашего конкретного интерфейса репозитория и добавив к нему @Transactional, содержащий конфигурацию, которую вы хотите иметь.Подробнее см. справочную документацию .

0 голосов
/ 15 апреля 2011

Все зависит от распространения, заданного в аннотации @Transactional. По умолчанию он установлен на REQUIRED, что означает: если нет контекста транзакции, создайте его и подтвердите в конце метода; иначе, включите вызов метода в существующий контекст транзакции.

Существуют и другие: REQUIRES_NEW, SUPPORTS, НИКОГДА и т. Д. Подробности см. http://static.springsource.org/spring/docs/3.0.x/api/org/springframework/transaction/annotation/Propagation.html.

...