如何解决Micronaut数据JPA反应式-如何解决交易?
现在我正在使用Micronaut数据JPA-以完全阻塞的方式在我的应用程序中使用hibernate和postgresql,即:
@Repository
public class PetRepository extends CrudRepository<Pet,String> {}
我认为我可以将rxjava引入应用程序,以充分利用非阻塞Netty服务器的潜力。
现在我唯一需要担心的是,如何为响应流管理事务?
我的一些阻止代码如下:
@Singleton
@requiredArgsConstructor
public class PetService {
private final PetRepository repository;
private final SomeOtherService someOtherService;
@Transactional
public void doSomethingWithAPet(String petId,String newName) {
Pet pet = repository.findById(petId);
if (pet.something()) {
someOtherService.doStuff();
pet.setName(newName);
}
repository.save(pet);
}
}
现在让我说我将以被动方式进行此操作,例如:
@Transactional
public Completable doSomethingWithAPet(String petId,String newName) {
return repository
.findById(petId)
.flatMapCompletable(pet->{
if(pet.something()){
someOtherService.doStuff();
pet.setName(newName);
}
return repository.save(pet)
.ignoreElement();
}
}
文档说:
对于JPA,每个操作都将以其自己的事务和会话运行,因此需要注意获取正确的数据并避免分离对象。
我是否正确理解反应式版本将产生两个事务? -一个用于findById
,另一个用于save
?
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。