Je configure la mise en cache Hibernate et souhaite mettre en cache certaines entités dans différentes régions. Par exemple, certaines entités peuvent être "périmées" jusqu'à 5 minutes, certaines pendant une heure, et certaines (comme les recherches) ne changeront pas pendant des semaines. Pour faciliter config facile des régions dans mon code, je suis en train de ce qui suit:Annotations d'annotations en Java 5/6
J'ai créé une annotation nommée @LookupCache
(et @DailyCache
etc.)
@Cache(region = "lookups", usage = CacheConcurrencyStrategy.READ_ONLY)
@Retention(RetentionPolicy.RUNTIME)
public @interface LookupCache {}
Et j'ajoute que l'annotation à mon Hibernate/JPA entité:
@LookupCache
public class Course {}
de cette façon, je peux facilement changer la région ou les attributs de la @LookupCache
sans avoir à changer les params d'annotation de chaque classe.
Toutefois, le chargeur de cache ne récupère pas cette notation @Cache
héritée. Comment puis-je obtenir l'annotation @LookupCache
pour hériter des annotations qui lui sont appliquées?
Mise à jour: Pour plus de clarté, l'annotation @Cache est une annotation d'hibernation intégrée utilisée par les caches de second niveau comme EHCache. Je ne peux pas modifier l'annotation @Cache pour la rendre héritable par d'autres annotations (mon client ne veut pas maintenir une fourche spéciale d'hibernation). C'est probablement ma seule option cependant.
Les annotations ne fonctionnent pas comme ça, j'ai peur. Il n'y a pas d '«héritage» comme ce que vous cherchez, c'est à Hibernate de le faire explicitement, ce qui n'arrivera pas parce que c'est une annotation personnalisée. – skaffman
Voilà pour DRY. Merci. –