我有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個地址。我想應該有一些方法來優化這個提取過程。 –