gpt4 book ai didi

mysql - Hibernate继承性能

转载 作者:行者123 更新时间:2023-11-29 01:04:24 26 4
gpt4 key购买 nike

我正在使用 Hibernate 3 和 MySQL 数据库(我尝试使用 Hibernate 4 但没有成功)。我已经实现了一个表每个具体类的继承策略(联合子类)。

除了多态查询,它可以完成工作。Hibernate 生成一个基于 UNION 的查询,其中“where”子句位于高级查询中:

select primKey, param1, param2 from (
select primKey, param1, param2 from Concrete1
union
select primKey, param1, param2 from Concrete2
)
where primKey == <value>
order by param1
limit 100

这会导致非常糟糕的性能,因为加载了整个具体表的内容,而由于 pkey 是抽象父项的属性,因此可以在子选择中定义“where”子句。

所以目标是让 Hibernate 生成这种查询:

select primKey, param1, param2 from (
select primKey, param1, param2 from Concrete1 where primKey == <value>
union
select primKey, param1, param2 from Concrete2 where primKey == <value>
)
order by param1
limit 100

这样,查询会立即执行。

知道如何配置 Hibernate 来改变这种行为吗?

谢谢

是的。

最佳答案

我曾经遇到过类似的性能问题,但发现唯一的解决方案是(至少在当时)将实现切换到 "Table per class hierarchy"这提供了更好的性能,因为它不需要联合或连接。它不是那么简洁的模式明智,但如果你只有几个子类可能是一个很好的选择。

关于mysql - Hibernate继承性能,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11205550/

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