2012-06-16 84 views
0

还挺尴尬的询问后使用Hibernate几年这个问题...在Hibernate中有太多的查询,甚至懒取

我有一个master_table其中:

  • 有一些@OneToMany(取= FetchType.LAZY,的mappedBy = “东西”)
  • 和一些@ManyToOne(取= FetchType.LAZY)
  • 可能有一些@OneToOne
  • 在child_table
  • 同样的事情

我只装载了master_table,它给了我大约500行。但在后台,大约有6000个查询。 (相当肯定没有EAGER)

问题:这是正常吗?是否有可能加载这个表只有一个查询,而不会影响延迟加载机制,这在这里工作得非常好。

感谢

+0

很难说没有看到实际的配置。 – Marvo

回答

0

答案很简单: - 使用取=子选择上@OneToMany给了我只有一个查询。因为它是懒惰的,当需要孩子时,会产生相应的查询 - 使用BatchSize也是一个不错的选择

+0

或者您可以使用JOIN获取模式 –

+0

不,JOIN获取模式不起作用。公司还有1个查询和员工查询(多次测试)。 BatchSize = m帮助某种方式,因为查询的数量将是1 + n/m。 –

+0

我想你的问题并不清楚你正在做什么以及你想要达到什么。很高兴你有一个你很满意的答案。 –