Performance Hibrate namedquery或criteria query-为了更好的性能?

Performance Hibrate namedquery或criteria query-为了更好的性能?,performance,hibernate,criteria,Performance,Hibernate,Criteria,讨论我可以在项目中使用的hibernate 案例1:我有一个简单的查询案例: 从何处选择 在这种情况下,我可以使用hibernate的哪种功能—通过命名查询查找或使用条件/分离条件—哪种功能的性能更好 案例2:对于连接查询案例,哪种工具最有效:条件/分离条件或在我的父VO[引用父表]内使用引用VO[引用外键表] 案例1:我有一个简单的查询案例:从何处选择 对于这种情况,我可以使用hibernate的哪种功能-按命名查询查找或 使用标准/分离标准-哪一个对性能更有利 您将看到两者之间唯一的性能差

讨论我可以在项目中使用的hibernate

案例1:我有一个简单的查询案例:

从何处选择
在这种情况下,我可以使用hibernate的哪种功能—通过命名查询查找或使用条件/分离条件—哪种功能的性能更好

案例2:对于连接查询案例,哪种工具最有效:条件/分离条件或在我的父VO[引用父表]内使用引用VO[引用外键表]

案例1:我有一个简单的查询案例:从何处选择

对于这种情况,我可以使用hibernate的哪种功能-按命名查询查找或 使用标准/分离标准-哪一个对性能更有利

您将看到两者之间唯一的性能差异是基于查询解析时间。对于命名查询,该查询将在hibernate启动时解析一次并重新使用。如果使用条件查询,则在运行时将在每个执行点解析查询

案例2:对于连接查询案例,哪种工具最有效: 标准/分离的标准或使用参考VO[参考外键 表]在我的父VO内[参考父表]

除非您的联接查询再次是命名查询,否则您将遇到与上面相同的性能问题,主要是在将查询解析为SQL方面

至于您选择使用Hibernate/JPA标准API还是JPQL/HQL;这真的是一个品味的问题

在使用ORM时,您可能应该考虑的最关键的性能问题是确保您的获取策略足够,并且使用适当的连接来避免诸如N+1选择问题之类的问题


充分利用元组查询或构造新的值对象查询可以大大减少网络带宽,因为所查询的实体很宽,并且有多个实体被连接在一起以获得某些UI视图。

感谢Naros的回复。我会再读一遍,试着抓住你所说的概念/答案,但当我读几遍时,我几乎没有问题;1.Namedquery将在hibernate启动时解析,但在运行时的每个执行点上都会解析criteria查询,所以这意味着Namedquery比criteria查询更好用?您还提到运行时会出现性能差异,但很抱歉,我真的不太理解它,因为namedquery似乎总体上有更好的性能,因为它不需要每次都进行解析,而不是条件查询?案例2:选择方法是一个品味问题,但如果namedquery更好,那么我可以一直使用它?如果这些问题不好,很抱歉。再次感谢您的良好响应。是的,
NamedQuery
s被解析一次,因此在运行时会有一点效率,因为这是事实。但有时,仅考虑到某些查询的动态性质,
NamedQuery
s是不可能的,因此基于
创建的查询更好。我不会像担心数据库上查询本身的执行时间这样担心查询的解析成本。