Я настраиваю кэширование Hibernate и хочу кэшировать определенные объекты в разных регионах. Например, некоторые объекты могут быть «устаревшими» в течение 5 минут, некоторые - в течение часа, а некоторые (например, поисковые запросы) не будут меняться в течение нескольких недель. Для облегчения конфигурации областей в моем коде, я пытаюсь следующее:Аннотации аннотаций в Java 5/6
Я создал аннотацию с именем @LookupCache
(и @DailyCache
и т.д.)
@Cache(region = "lookups", usage = CacheConcurrencyStrategy.READ_ONLY)
@Retention(RetentionPolicy.RUNTIME)
public @interface LookupCache {}
И я добавляю аннотацию к моей Hibernate/JPA объект:
@LookupCache
public class Course {}
Таким образом, я могу легко изменить регион или атрибуты @LookupCache
без изменения аннотаций Params каждого класса.
Однако загрузчик кеша не берет эту унаследованную нотацию @Cache
. Как получить аннотацию @LookupCache
для наследования аннотаций, которые применяются к ней?
Обновление: Чтобы уточнить, аннотация @Cache представляет собой встроенную аннотацию спящего режима, используемую кэшами второго уровня, такими как EHCache. Я не могу изменить аннотацию @Cache, чтобы сделать ее наследуемой другими аннотациями (мой клиент не хочет поддерживать специальную вилку hibernate). Это, вероятно, мой единственный вариант.
Аннотации так не работают, боюсь. Там нет «наследования», как то, что вы ищете, это до Hibernate, чтобы сделать это явно, чего не произойдет, потому что это пользовательская аннотация. – skaffman
Так много для СУХОЙ. Благодарю. –