参考链接: Java程序来检查一个集合是否是另一个集合的子集
我有一个场景,我的应用程序可以访问有限时间窗口的会话,在此期间它必须从数据库中获取数据到内存中,然后只使用内存中的数据来处理请求.
...我的问题是,使用hibernate加载这些数据的最佳方法是:
> road.getCarCountMap()仅返回过去3个月中车辆计数的集合(可能为空)
>我最终得到一些需要很长时间才能处理的疯狂笛卡尔产品...但不幸的是它迫使我硬编码一个值,所以我不能真正参考过去3个月. time_oid每天增加1.
2.将map定义为lazy并使用hql查询手动连接3个表:
from Road r
left outer...,而它应该是10k道路*每月4次测量(每周)* 3个月= ~120k.这个查询在大约一个小时内完成,这很荒谬,因为方法#1(在我关注的情况下加载完全相同的数据)在3分钟内完成.
3.将地图定义为延迟并首先使用条件加载道路...,使用criteria.list()加载所有道路,迭代过去3个月内的所有测量日期,以强制加载这些值.