我有Hibernate的问题非常缓慢。问题是某些查询需要很长时间才能执行。 我发现,实体“客户”之一,有3个关系@OneToOne到另一个实体“地址” - 对不同类型的地址:“managementAddress”,“correspondenceAddress”和“buildingAddress”。在“地址”实体中,与“客户”实体没有关系。我发现缓慢加载来自这些关系。 @OneToOne关系被急切地初始化。我不允许改变模型关系。有没有人有想法,我怎么能提高执行速度?谢谢。休眠模式,多@OneToOne关系
这是关系是如何在“客户”实体宣称:
@OneToOne(optional=true)
@Cascade(org.hibernate.annotations.CascadeType.ALL)
private Address managementAddress;
这是从Hibernate的统计样本,用于加载50“客户”实体:
7248515 nanoseconds spent acquiring 51 JDBC connections;
2583681 nanoseconds spent releasing 51 JDBC connections;
43894536 nanoseconds spent preparing 203 JDBC statements;
4106621728 nanoseconds spent executing 203 JDBC statements;
0 nanoseconds spent executing 0 JDBC batches;
0 nanoseconds spent performing 0 L2C puts;
0 nanoseconds spent performing 0 L2C hits;
0 nanoseconds spent performing 0 L2C misses;
如果是多个查询启用的persistence.xml show_sql并通过在主要时间检查数据库日志手动DB执行和配置文件经过一个接一个,如果可能的 – HRgiger
感谢您的建议。我试过了,看来Hibernate会生成多个Select语句来为每个客户端检索3个地址。我想应该有一些方法来优化这个提取过程。 –