Hibernate:如何获取外键数据可选?

时间:2013-02-08 13:46:30

标签: java mysql performance hibernate

我有一个包含客户数据的表,该表与订单表的外键相关联。显然,一个客户可以拥有多个订单,但每个订单只有一个客户。

当我检索客户数据时,Hibernate会自动获取客户端的连接订单。但在许多情况下,我只需要客户数据。出于性能原因,我想避免这种情况,只有在需要时才能获得订单。

有可能吗?这实际上会影响性能吗?

谢谢! 噪声

1 个答案:

答案 0 :(得分:3)

如果您在加载客户时已将customerorder之间的关联映射到Fetchtype.LAZY,则只有在您访问订单时才会加载订单。通过这种方式,加载速度会更快。

相反,FetchType.EAGER会在您加载orders对象时加载customer的集合,从而影响效果。

您可以告诉Hibernate您更喜欢哪种关联,使用注释的示例是:

@OneToMany(cascade = CascadeType.ALL, fetch = FetchType.LAZY)