#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): да.