Hibernate在MySQL上发出太多查询

时间:2011-03-26 11:31:31

标签: mysql hibernate

我在Spring中使用hibernate 3.0和Mysql 5.我在JBOSS中配置了JNDI数据源并在应用程序上下文中使用它。

我的问题是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>

我在java级别使用JTA事务。 欢迎任何帮助。

3 个答案:

答案 0 :(得分:1)

其中一个应该是这种情况

  • 您正在处理/处理太多请求 - 开发时不太可能。
  • 你正在遇到N + 1选择条件 - 很常见。

请发布您的域名模型以及正在执行的查询。

答案 1 :(得分:0)

您是如何使用JTA交易的?如果每个Java方法都标记为需要新事务,这可以解释您的部分问题。此外,应审查您的Hibernate对象关系。如果您有复杂的关系,在模型关系或循环关系中定义了许多急切加载的对象,那么您可能需要解决更难的问题。

答案 2 :(得分:0)

您可以处理N + 1个查询问题right from unit tests。此外,将所有EAGER关联切换为LAZY和initialize the ones that you need at query time with JOIN FETCH