Использование Spring @Transactional для предотвращения грязных операций чтения в нескольких JVM

#spring-boot #spring-data-jpa #spring-transactions

#spring-boot #spring-data-jpa #spring-транзакции

Вопрос:

У меня есть приложение spring boot. Я запускаю несколько экземпляров этого приложения на разных серверах. Существует ситуация, когда в этих разных экземплярах JVM читается одна и та же таблица в oracle DB. Я видел, что между этими экземплярами JVM есть грязные операции чтения.

Чтобы решить эту проблему, можем ли мы использовать @Transactional с атрибутом уровня изоляции? Я считаю, что, поскольку уровень изоляции блокирует строки в БД, он также должен работать на нескольких JVM, чтобы избежать грязного чтения. Например,

 @Transactional(isolation = Isolation.REPEATABLE_READ)
  

Нет необходимости в глобальных транзакциях или чем-то еще, я просто хочу избежать грязных операций чтения.

Комментарии:

1. Если вы действительно заботитесь только о предотвращении грязных операций чтения, этого READ_COMMITTED будет достаточно и, как правило, менее ресурсоемким.

2. @JoachimSauer Да, уровень изоляции я могу решить, но меня беспокоит, будет ли это работать на нескольких JVM

3. Поскольку этот параметр в основном применяется к БД (и это уже за пределами вашей JVM): да.