多级数据集的Hibernate性能问题

时间:2013-05-05 07:28:39

标签: performance hibernate

我有以下数据集:

Class-
      |- Section
      |         |- Student1
      |         |         |-Day1Details
      |         |         |-Day2Details   
      |         |- Student2
      |         |         |-Day1Details
      |         |         |-Day2Details  
      |- Section
                :
                :

我正在使用Hibernate ORM将上面的示例数据保存到db中。当我们尝试检索这个数据时,hibernate会分别为每个学生执行查询。因此,如果有1000名学生,它将触发1000次查询以获取整个数据集,并且由于对数据库的大量i / o而影响应用程序的性能。

我希望在以下几个查询中收集这些数据。

select class,section, students from c,s,stu where student.sec=s.sec and s.class = c.class

select day_details from day_details_tab where student in (studentId from above query).

有人可以帮助我实现这个目标吗?

1 个答案:

答案 0 :(得分:0)

the documentation中描述了HQL中联接和关联的用法。一次加载所有内容的正确查询是:

 select clazz from Clazz clazz
 left join fetch clazz.sections section
 left join fetch section.students student
 left join fetch student.dayDetails

HQL使用实体和关联。永远不要像你在问题中那样使用表格和列名称。