我试图检查 SERIALIZABLE 隔离级别是否适合以下情况:表 events 包含为特定用户安排的给定日期和时间的事件记录。服务应针对给定的用户和时间范围检查是否存在已安排的事件,以及是否不存在创建新事件的事件(upsert操作)。
@Transactional(isolation = Isolation.SERIALIZABLE)
@Override
public Event createEvent(Event event) {
eventRepository.checkIfNoEventExists(event);
...
// load entities from different tables and inject to event
...
eventRepository.save(event);
}
此事务是否会阻塞对其他表执行写操作的其他并发事务?处理失败的最佳实践是什么:
由于事务之间的读/写依赖性,无法序列化访问
最好将 SERIALIZABLE 隔离级别的范围限制为仅检查和保存(例如,在自定义存储库方法中)?