2012-03-28 12 views
0

Ich bin mit Annotation-basierte Konfiguration der Cache-Strategie für alle Hibernate Entitäten wie wie untenWie Hibernate Entity-Cache-Konfiguration zur Laufzeit ändern

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

Wir haben gemeinsames Projekt zu konfigurieren, dass alles Hibernate Einheit clasess zu halten. Wir werden ein Glas bauen und es in verschiedenen Anwendungen verwenden. Wir verwenden diese Entity jar in zwei Anwendungen. Ich muss verschiedene Caching-Strategien für zwei Anwendungen verwenden. Für Anwendung1 muss ich @Cache (Verwendung = CacheConcurrencyStrategy.READ_WRITE) und für Anwendung 2 muss ich @Cache verwenden (Verwendung = CacheConcurrencyStrategy.READ_ONLY).

Also ich möchte diese Konfigurationseinstellungen dynamisch zur Laufzeit für Anwendung2 ändern.

Anerkannt, wenn jemand den Ansatz vorschlagen kann.

Antwort

2

Sie müssen die Caching-Richtlinie für eine Klassenlaufzeit nicht ändern. Sie müssen nur eine eigene Klasse mit Konstanten wie diese haben:

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 {...} 

Dann haben nur zwei unterschiedliche Dateien mit Eigenschaften für unterschiedliche Anwendungen.

P.S. es muss keine separate Klasse mit der Konstante sein. Es ist nur ein Beispiel, wie Dinge aus meiner Sicht besser organisiert werden können.

Verwandte Themen