2015-02-05 2 views
1

У меня есть контроллер в приложении Spring Boot. Контроллер получает json из запроса POST. Разбор JSON Мне нужно создать три новых объектов в базе:Как создать транзакцию для сохранения нескольких объектов в базе данных?

accountRepository.save(account); 
    containerRepository.save(userContainer); 
    containerRepository.save(operatorContainer); 

Saving это три объекта в базу данных должны быть в одной транзакции. На данный момент я использую метод @Transactional. Однако, кажется, плохая практика отмечать контроллеры аннотацией @Transaction. Должен ли я создать службу, в которой я бы сохранил три объекта, переданных в качестве аргументов, и пометить службу @Transactional? Каков наилучший способ сделать это? Может быть, кто-то может привести пример?

ответ

4

Лучшее место для этого было бы в методе на вашем сервисном уровне.

@Service 
public class MyService { 

    @Autowired 
    AccountRepository accountRepository; 

    @Autowired 
    ContainerRepository containerRepository; 

    @Transactional 
    public void save(Account account, Container userContainer, Container operatorContainer) { 
    accountRepository.save(account); 
    containerRepository.save(userContainer); 
    containerRepository.save(operatorContainer); 
    } 
} 

Затем подключите службу к контроллеру.

Смежные вопросы