Как изменить конфигурацию кэша спящего объекта во время выполнения - PullRequest
0 голосов
/ 29 марта 2012

Я использую конфигурацию на основе аннотаций для настройки стратегии кэширования для всех объектов гибернации, как показано ниже

@Entity
@Table(name = "EMP")
@Cache(usage = CacheConcurrencyStrategy.READ_WRITE)
public class EMPLOYEE extends AbstractEntity { 

У нас есть общий проект для поддержки всех кластеров объектов гибернации.мы будем строить банку и использовать ее в разных приложениях.Мы используем эту сущность jar в двух приложениях.Я должен использовать разные стратегии кэширования для двух приложений.Для приложения 1 я должен использовать @Cache (использование = CacheConcurrencyStrategy.READ_WRITE), а для приложения 2 я должен использовать @Cache (использование = CacheConcurrencyStrategy.READ_ONLY).

Поэтому я хотел бы изменить эти параметры конфигурациидинамически во время выполнения для application2.

Оценивается, если кто-либо может предложить подход.

1 Ответ

2 голосов
/ 29 марта 2012

Вам не нужно менять политику кэширования для времени выполнения класса. Вам нужно просто иметь отдельный класс с такими константами, как этот:

public abstract class Settings {
   public static final CacheConcurrencyStrategy CACHE_STRATEGY;

   static {
      // initialize the field, e.g. based on a value from a properties file
   }
}

then 

@Entity
@Table(name = "EMP")
@Cache(usage = Settings.CACHE_STRATEGY)
public class EMPLOYEE extends AbstractEntity {...}

Тогда просто есть два разных файла со свойствами для разных приложений.

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

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