【发布时间】:2017-01-10 21:06:12
【问题描述】:
让C 是一个具有另一个类D 作为其属性的类。原则上,将D 存储为C 的嵌入类在检索时必须比通过@ManyToOne(甚至@OneToOne)将其存储为单独的实体提供更好的性能,因为在后一种情况下,D 需要从可能包含数百万行的单独表中检索。
我的问题是这种性能差异是否显着,即在决定嵌入和@ManyToOne 之间时,它是否足以抵消其他考虑因素。
我意识到这个问题有点软,我想我正在寻找的是人们根据经验来回答。
【问题讨论】:
-
为什么将其存储为嵌入式会为您提供更好的性能?这不完全取决于您的数据库模型和使用情况,以及您是否需要检索或搜索那些可嵌入字段?
-
因为
D与C位于同一行,并且不需要访问单独的表?我确信在某些情况下差异可以忽略不计,我正在询问不是的情况。 -
ManyToOne 向后暗示 OneToMany,因此您暗示您在行中存储重复数据。从 JPA 的角度来看,这根本不是问题,但从您的数据库和网络的角度来看,这本质上是一个关于规范化的主观问题。
-
很公平。感谢您指出,这本质上是要求标准化对性能的影响!
标签: mysql eclipselink jpa-2.0 database-normalization denormalization