让C
成为另一个类D
作为其属性的类。原则上,将D
存储为C
的嵌入类必须在检索时提供比通过@ManyToOne
(或甚至@OneToOne
)将其作为单独的实体存储更好的性能,因为在在后一种情况下,需要从可能包含数百万行的单独表中检索D
。
我的问题是这种性能差异是否显着,即它在决定嵌入和@ManyToOne
之间是否足以抵消其他考虑因素。
我意识到这个问题有点软,我想我正在寻找的是人们从经验中回答。
答案 0 :(得分:0)
我的(柔和,就像你的问题)答案是'总是以最好的方式让生活模拟(模型)'。
我为自己设定了一个主要问题:拥有'小班'的独立生活?或者只是概念胶水(如街道+家庭+本地名为Address
)?对于许多实体而言在概念上可以相同吗?蜜蜂'小班'可以为空(可以在喜马拉雅山登陆的地址) - 可以为空的@OneToOne?
哪种Java模型更好(真实,自然)?
我记得只有一个'实施问题':总是使用“小班级”字段(阅读) - 非常罕见,可以作为懒惰服务,特别大。将感知'Memo'varchar(4000)的字段移动到extern表是好的(附件字段:日期,备忘录的作者等)。
编辑:“小班级”有多大并且很少使用?在一个项目中Address
被正确建模为独立表,在其他嵌入式中。
几乎可以通过良好的逻辑模型获得正确的性能结果。考虑到具有逻辑错误的极端'仅JPA性能'会导致降级,这是代码中的其他地方。
我的观点是:通过逻辑参数进行设计。表现可能会有所不同。