2011-03-26 62 views
4

我在Spring 5中使用hibernate 3.0。我在JBOSS中配置了JNDI數據源,並在應用程序上下文中使用它。Hibernate在MySQL上發出太多查詢

我的問題是Hibernate每秒向數據庫發出平均466.4個查詢,而網站幾乎沒有任何負載。

applicationContext.xml的片段是

<bean id="dataSource" class="org.springframework.jndi.JndiObjectFactoryBean" scope="singleton"> 
    <property name="jndiName" value="java:MyCustomDSName" /> 
    <property name="resourceRef" value="true" /> 
</bean> 

我使用JTA事務的Java級別。 歡迎任何幫助。

+1

這些查詢是什麼?你每秒有多少次瀏覽網頁服務器? – 2011-03-26 11:41:21

+0

每秒466個查詢。這些查詢是HQL查詢。但我想我已經得到了這個問題。也許它是啓動查詢的Lazy初始化。 – 2011-03-26 14:28:35

+0

您可能想要啓用SQL日誌記錄來查看實際正在進行的操作。沒有這個,你只是在黑暗中拍攝。 – mindas 2011-03-26 22:48:05

回答

1

其中一個應該是這樣的

  • 你越來越/處理過多的請求 - 不太可能在開發。
  • 您正在遇到N + 1個選擇條件 - 非常常見。

請發佈您的域模型以及正在執行的查詢。

0

您如何使用JTA事務?如果每個Java方法都被標記爲需要一個新的事務,這可以解釋你的問題的一部分。另外,你的Hibernate對象關係應該被檢查。如果你有複雜的關係,在你的模型關係或循環關係中定義了許多熱切加載的對象,你可能會遇到更難解決的問題。