我有一个包含 OrderLines 集合的订单。每个 OrderLine 都有一个多对一的产品。对于所有订单,我有一个搜索窗口——默认情况下——在网格中显示所有订单。使用同一个窗口,我可以过滤包含给定产品的所有订单。我们的客户每天产生大约 700 个订单,订单平均有大约 35 行。
在搜索窗口中,我只显示存储在 Order 对象本身中的信息。但是,如果我过滤特定产品,它将初始化我与 OrderLine 集合的延迟加载关系以及与我的 OrderLine 中的产品的多对一关系。每个订单行被逐行查询,并且对于每一行,对产品表都有一个单独的查询。
所以平均每个订单我得到 35 个查询来初始化所有 OrderLine,加上 35 个查询来获取与该订单相关的产品。
一次加载所有订单行及其相关产品(如果不可能,每个订单的所有订单行)的最佳方式是什么?我知道我可以将我的多对一映射到 orderline 中的产品作为 fetch="join",但这仍然会给我留下 35 个单个查询来获取 orderlines+products。
仅供参考:目前我加载所有东西都是懒惰的。
有什么建议么?我可以在这里使用 Future 吗?
问候,特德