gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-12-01 11:43:12 25 4
gpt4 key购买 nike

我有一个 @Entity 类,可以使用 spring-boothibernatepostgres 进行持久化。

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

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

这可能吗?如果没有,我怎样才能实现这一目标?

最佳答案

您可以像这样扩展该类:

@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 进行按属性复制

关于java - 如何将实体动态持久化到不同的表中?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29345443/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com