【发布时间】:2012-03-01 22:31:09
【问题描述】:
我正在尝试决定使用哪个注释。你能发表你的意见吗?
我现在拥有的:
@Entity
public class Balance {
@Embedded
private Amount amountAtm;
@Embedded
private Amount amountBranch;
@Embedded
private Amount amountVault;
}
@Embeddable
public Amount {
private BigDecimal debit;
private BigDecimal credit;
}
我想把它改成什么:
@Entity
public class Balance {
@ElementCollection
private Map<AmountType, Amount> amounts;
}
public enum AmountType {
ATM, BRANCH, VAULT;
}
金额将保持不变。
之所以发生这种变化,是因为余额中的金额在概念上是一个集合。我要么同时显示/更改所有这些,要么根本不显示。所以,我将他们视为一个群体。
问题:
现在金额与余额存储在同一个表中(我覆盖了列名,代码中没有显示)。但是,如果我进行此更改,我将无法将所有这些数据存储在一个表中。我必须将金额存储在单独的表中。 这是正确的吗?
考虑到现在我必须在 SQL 等中进行 JOIN。这将如何影响性能?假设我使用的是 Oracle 11g,并且我有 100,000 条余额记录(因此300,000 金额)。更改后我会注意到应用程序的速度变慢吗?
【问题讨论】:
-
JPA(1 或 2 或 2.1)没有这样的 @EmbeddedCollection 注释,也不在 OpenJPA 文档中。也许澄清你的意思......
-
@DataNucleus 你是对的,我的意思是 \@ElementCollection 注释。另外,我已经完全重写了这个问题以使其更清楚。感谢您的反馈。