Hiberate命名查询或条件查询 - 以获得更好的性能?

时间:2015-12-12 05:48:41

标签: performance hibernate criteria

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

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

select <column> from <table> where <condition>

对于这种情况,我可以使用哪种hibernate工具 - 通过命名查询或使用条件/分离标准查找 - 哪一个更适合性能。

案例2:对于连接查询案例,哪个设施最有效:条件/分离标准或在我的父VO [引用父表]中使用引用VO [引用外键表]

1 个答案:

答案 0 :(得分:0)

  

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

     

对于这种情况,我可以使用哪种hibernate工具 - 通过命名查询或查找   使用标准/分离标准 - 哪一个会更好地表现。

您将在两者之间看到的唯一性能差异基于查询分析时间。在命名查询的情况下,查询将在启动一次hibernate时被解析并重用。如果您使用标准查询,则将在运行时在每个执行点解析查询。

  

案例2:对于连接查询案例,哪个设施最有效:   标准/分离标准或使用参考VO [指外键   table]在我的父VO里面[指父表]

除非您的join-query再次成为命名查询,否则您将遇到与上述相同的性能问题,主要是在将查询解析为SQL的区域。

至于您是否选择使用Hibernate / JPA条件API或JPQL / HQL;这真的是品味问题。

在使用ORM时,您可能应该考虑的最重要的性能问题是确保您的提取策略足够,并且使用正确的连接来避免诸如N + 1 SELECT问题之类的问题。

充分利用元组查询或构造新的值 - 对象查询可以大大减少网络带宽,当被查询的实体很宽并且有几个连接在一起进行某些UI视图时。