Hibernateに問題があります。問題は、クエリの一部が実行に時間がかかりすぎることです。 エンティティ "クライアント"の1つが、 "managementAddress"、 "correspondAddress"、 "buildingAddress"という異なるタイプのアドレスに対して、3つのリレーションシップ@OneToOneを別のエンティティ "アドレス"に持つことがわかりました。 「住所」のエンティティには、「クライアント」エンティティとの関係はありません。私は遅い負荷がこれらの関係から来ていることを理解しました。 @OneToOneの関係は丁寧に初期化されます。モデル関係を変更することはできません。誰かがどのように実行のスピードを上げることができるのだろうか?ありがとう。複数の@OneToOne関係でHibernateが非常に遅い
これは関係が「クライアント」エンティティで宣言されている方法です:
@OneToOne(optional=true)
@Cascade(org.hibernate.annotations.CascadeType.ALL)
private Address managementAddress;
これはロード50「クライアント」のエンティティのために、Hibernateの統計からのサンプルです:
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を有効にしてご提案のための可能な – HRgiger
おかげであれば、メインタイムチェックデータベースのログとプロファイルに手動でDBに実行することにより、一つ一つを通過します。私はそれを試み、Hibernateが複数のSelectステートメントを生成して各クライアントの3つのアドレスを取得するようです。このフェッチプロセスを最適化する方法がいくつかあるはずです。 –