我有一个@Entity
类要使用spring-boot
、hibernate
和postgres
持久化。
现在,我想动态调整实体保存到(或从中读取)的表。这可能吗?
我的目标是创建某种具有大型数据集的缓存表。我希望每天优化和刷新缓存一次(在这个过程中,可能会持续几个小时,我希望在另一个表上进行任何实体操作)。然后,在重建和优化完成后,我想切换回第一个表(再次重建时使用第二个表,反之亦然)。
这可能吗?如果没有,我怎么能做到这一点?
您可以扩展类,如:
@Entity
@Table("cache_table_name")
@Inheritance(strategy=InheritanceType.TABLE_PER_CLASS)
class CachedVersionOfOriginal extends Original {
//nothing here
}
它们将具有相同的结构,TABLE_PER_CLASS确保两个不同的表。
如果你想提取Original,然后插入到CachedVersionOfOriginal中,你可以使用代理模式,比如:
@Entity
@Table("cache_table_name")
@Inheritance(strategy=InheritanceType.TABLE_PER_CLASS)
class CachedVersionOfOriginal extends Original {
private Original original;
public CachedVersionOfOriginal(Original original){
this.original = original;
}
//Then delegate
@Override
public String getPropertyA(){
return orginal.getPropertyA();
}
}
或者使用Apache Commons逐个属性复制