如何动态地将实体持久化到不同的表?

时间:2015-03-30 11:47:23

标签: java spring hibernate postgresql

我有一个@Entity课程,可以继续使用spring-boothibernatepostgres

现在我想动态调整实体保存到(或从中读取)的表。 这可能吗?

我的目标是使用大型数据集创建某种缓存表。我想每天优化和刷新一次缓存(在该过程中,可能持续几个小时,我希望在另一个表上进行任何实体操作)。然后,在重建和优化完成后,我想切换回第一个表(并在重新重建时使用第二个表,反之亦然)。

这有可能吗? 如果没有,我怎么能实现这个目标?

1 个答案:

答案 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按物业副本进行财产

相关问题