如何创建事务以在数据库中保存多个对象?

How to create transaction to save several objects in the database?

我的 Spring 启动应用程序中有一个控制器。 控制器从 POST 请求中收到 json。解析 json 我需要在数据库中创建三个新对象:

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

将这三个对象保存到数据库应该在一个事务中。 现在我在控制器方法上使用 @Transactional 。但是,通过 @Transaction 注释标记控制器似乎是不好的做法。 我是否应该创建服务以保存作为参数传递的三个对象并将服务标记为@Transactional? 最好的方法是什么?也许有人可以提供一个例子?

最好的地方是在服务层的方法中。

@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);
  }
}

然后在您的控制器中连接服务。