2015-02-05 29 views
1

我在我的Spring Boot應用程序中有一個控制器。 控制器從POST請求接收json。解析我需要在數據庫中創建三個新對象的JSON:如何創建事務以保存數據庫中的多個對象?

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

保存這三個對象到數據庫應該是在一個事務中。 現在我在控制器方法上使用@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); 
    } 
} 

然後在您的控制器中連接服務。

相關問題