嵌入式类和@ManyToOne之间的性能差异

时间:2016-09-02 17:11:25

标签: mysql eclipselink jpa-2.0 database-normalization denormalization

C成为另一个类D作为其属性的类。原则上,将D存储为C的嵌入类必须在检索时提供比通过@ManyToOne(或甚至@OneToOne)将其作为单独的实体存储更好的性能,因为在在后一种情况下,需要从可能包含数百万行的单独表中检索D

我的问题是这种性能差异是否显着,即它在决定嵌入和@ManyToOne之间是否足以抵消其他考虑因素。

我意识到这个问题有点软,我想我正在寻找的是人们从经验中回答。

1 个答案:

答案 0 :(得分:0)

我的(柔和,就像你的问题)答案是'总是以最好的方式让生活模拟(模型)'。 我为自己设定了一个主要问题:拥有'小班'的独立生活?或者只是概念胶水(如街道+家庭+本地名为Address)?对于许多实体而言在概念上可以相同吗?蜜蜂'小班'可以为空(可以在喜马拉雅山登陆的地址) - 可以为空的@OneToOne? 哪种Java模型更好(真实,自然)?

我记得只有一个'实施问题':总是使用“小班级”字段(阅读) - 非常罕见,可以作为懒惰服务,特别大。将感知'Memo'varchar(4000)的字段移动到extern表是好的(附件字段:日期,备忘录的作者等)。

编辑:“小班级”有多大并且很少使用?

在一个项目中Address被正确建模为独立表,在其他嵌入式中。

几乎可以通过良好的逻辑模型获得正确的性能结果。考虑到具有逻辑错误的极端'仅JPA性能'会导致降级,这是代码中的其他地方。

我的观点是:通过逻辑参数进行设计。表现可能会有所不同。