Можно ли рассматривать таблицу только для чтения в спящем режиме? - PullRequest
6 голосов
/ 31 марта 2012

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

Я вижу аннотацию @Immutable, но, похоже, она все еще позволяет вставлять и удалять. Я хотел бы полностью рассмотреть всю таблицу (не только каждую сущность), как написано в камне. Есть ли простой способ сделать это? Или я неправильно понимаю документацию по @Immutable?

Если нужен пример, допустим, что есть таблица с таблицей MONTH, сущностью Month и таблицей APPOINTMENT, с которой связана сущность Appointment. Я бы никогда не захотел удалить или вставить строку в месяц.

Ответы [ 2 ]

3 голосов
/ 31 марта 2012

Вы пробовали использовать стратегию кэширования только для чтения:

Если вашему приложению нужно прочитать, , но не изменять , экземпляры постоянного класса, кэш только для чтения,используемый.Это самая простая и оптимальная стратегия выполнения.Это даже безопасно для использования в кластере.

От: 19.2.2.Стратегия: только чтение

1 голос
/ 31 марта 2012

Один из способов - использовать READ_ONLY транзакции, указав @Transactional(readOnly=true) над методом.

http://www.codeinstructions.com/2009/04/read-only-transactions-with-spring-and.html.

Другой метод. Что касается уровней изоляции, то, если ваша таблица никогда не вставляется и не обновляется, вы можете использовать уровень изоляции READ_UNCOMMITTED, который допускает грязное чтение, неповторяющееся чтение и фантомное чтение. Однако все это не имеет значения, поскольку данные никогда не меняются.

Вы можете посмотреть на различные уровни изоляции и эффекты каждого из них в весенних javadocs (http://docs.huihoo.com/javadoc/spring/2.5/org/springframework/transaction/annotation/Isolation.html)

Это максимально освободит блокировки строк и обеспечит наилучшую производительность, по крайней мере, в отношении блокировки

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...