2012-03-28 86 views
0

hibernate的实体缓存配置我使用基于注解配置中配置的缓存策略对所有休眠实体,如下面如何在运行时更改

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

我们有共同的项目,以维护所有休眠实体clasess。我们将构建一个jar并在不同的应用程序中使用它。我们在两个应用程序中使用这个实体jar。我必须为两个应用程序使用不同的缓存策略。 对于application1,我必须使用@Cache(usage = CacheConcurrencyStrategy.READ_WRITE) ,对于应用程序2,我必须使用@Cache(usage = CacheConcurrencyStrategy.READ_ONLY)。

所以我想在运行时为application2动态地更改这些配置设置。

赞赏,如果有人可以建议的方法。

回答

2

您不必为类运行时更改缓存策略。你只需要拥有与常量一个单独的类是这样的:

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.它不必与常数分开。从我的角度来看,这只是一个例子,可以更好地组织事物。