hibernate之优化抓取(选择抓取策略之通过子查询预抓取集合)

 

hibernate之优化抓取(选择抓取策略之通过子查询预抓取集合)

 


 

另一种并非瞎猜的预抓取算法是使用子查询,通过单个语句初始多个集合。如:

 

你用一个初始化的SQL SELECT获取所有的Item对象,并在每个bids集合被访问的时候用一个额外的SELECT。改善这种方法的一种可能是通过批量抓取;然后,需要算出试用的最佳批量大小。一种更好的优化是这个集合映射的子查询抓取:

 

一旦你强制初始化1个bids集合,hibernate现在就立即给所有被加载的Item对象初始化所有bids集合。它通过在一个子查询中重新运行第一个初始化查询来完成:

 

利用子查询预抓取是一种强大的优化;目前,子查询抓取只可用于集合,而不可用于实体代理。还要注意,作为子查询重新运行的原始查询,只被hibernate为一个特定Session而记住。如果你分离一个Item实例,而没有初始化bids的集合,那么重附它并启动对该集合的遍历,则不会发生其他集合的预抓取。

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值