我正在使用基于注释的配置来为所有hibernate实体配置缓存策略,如下所示
@Entity
@Table(name = "EMP")
@Cache(usage = CacheConcurrencyStrategy.READ_WRITE)
public class EMPLOYEE extends AbstractEntity {
我们有共同的项目来维护所有的hibernate实体clasess。我们将构建一个jar并在不同的应用程序中使用它。我们在两个应用程序中使用此实体jar。我必须为两个应用程序使用不同的缓存策略。 对于application1,我必须使用@Cache(usage = CacheConcurrencyStrategy.READ_WRITE) 对于应用程序2,我必须使用@Cache(usage = CacheConcurrencyStrategy.READ_ONLY)。
所以我想在运行时为application2动态更改这些配置设置。
赞赏,如果有人可以建议这种方法。
答案 0 :(得分: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。它不必是具有常量的单独类。从我的角度来看,它只是一个如何更好地组织事物的例子。