我有一个@Entity
课程,可以继续使用spring-boot
,hibernate
和postgres
。
现在我想动态调整实体保存到(或从中读取)的表。 这可能吗?
我的目标是使用大型数据集创建某种缓存表。我想每天优化和刷新一次缓存(在该过程中,可能持续几个小时,我希望在另一个表上进行任何实体操作)。然后,在重建和优化完成后,我想切换回第一个表(并在重新重建时使用第二个表,反之亦然)。
这有可能吗? 如果没有,我怎么能实现这个目标?
答案 0 :(得分:1)
你可以扩展类,如:
@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按物业副本进行财产