0

私はHibernateを学び、IDEとしてEclipse Helios、データベースとしてOracle11g、サーバーとしてGlassfish3を使用して遊んでいます。単純なアプリケーション (JSF + Spring + Hibernate)をフォローしています

単純な選択と挿入は非常に遅く、選択クエリにほぼ25秒かかることがわかりました。プレーンJDBCと比較してなぜ遅いのか知りたいです。

以下はserver.logからのものです。ページを更新すると、同じクエリが5回実行されます。これが遅い理由ですか?

INFO: Hibernate: select customer0_.CUSTOMER_ID as CUSTOMER1_0_, 
customer0_.NAME as NAME0_, customer0_.ADDRESS as ADDRESS0_, customer0_.
CREATED_DATE as CREATED4_0_ from scott.customer customer0_

INFO: Hibernate: select customer0_.CUSTOMER_ID as CUSTOMER1_0_, 
customer0_.NAME as NAME0_, customer0_.ADDRESS as ADDRESS0_, customer0_.
CREATED_DATE as CREATED4_0_ from scott.customer customer0_

INFO: Hibernate: select customer0_.CUSTOMER_ID as CUSTOMER1_0_, 
customer0_.NAME as NAME0_, customer0_.ADDRESS as ADDRESS0_, customer0_.
CREATED_DATE as CREATED4_0_ from scott.customer customer0_


INFO: Hibernate: select customer0_.CUSTOMER_ID as CUSTOMER1_0_, 
customer0_.NAME as NAME0_, customer0_.ADDRESS as ADDRESS0_, customer0_.
CREATED_DATE as CREATED4_0_ from scott.customer customer0_


INFO: Hibernate: select customer0_.CUSTOMER_ID as CUSTOMER1_0_, customer0_.
NAME as NAME0_, customer0_.ADDRESS as ADDRESS0_, customer0_.
CREATED_DATE as CREATED4_0_ from scott.customer customer0_

洞察や助けは非常に高く評価されます。

4

1 に答える 1

1

同じクエリを5回実行することが、ページをロードする最も効率的な方法ではないことを想像してみてください。

Hibernateなどのツールが内部で何をしているのかを理解することが重要です。つまり、すべてが実行されると想定することはできません。したがって、生成されたSQLを確認することは、確かに正しいことです。

ただし、実際に質問に答えるには、アプリケーションをプロファイリングする必要があります。クエリの実行に25秒かかることがわかった場合は、Oracle診断ツールを確認する必要があります。

于 2012-11-25T22:29:49.550 に答える