我的Spring Boot应用程序中有一个控制器。 控制器从POST请求接收json。解析json我需要在数据库中创建三个新对象:
accountRepository.save(account);
containerRepository.save(userContainer);
containerRepository.save(operatorContainer);
将这三个对象保存到数据库应该在一个事务中。
现在我在控制器方法上使用@Transactional
。然而,通过@Transaction注释标记控制器似乎是不好的做法。
我应该创建服务,我将保存作为参数传递的三个对象并标记服务@Transactional?
最好的方法是什么?也许有人可以提供一个例子吗?
答案 0 :(得分: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);
}
}
然后在控制器中连接服务。