Hibernate之批量抓取

###什么是批量抓取?

  • 一批关联对象一起抓取,配置batch-size
  • 应用场景:当我们想获取全部的商品类别,然后在获取所有类别下面的商品时.
  • 测试批量抓取
/*
 * 测试批量抓取
 * */
 @Test
 public void test9(){
     Session session=HibernateUtils.getCurrentSession();
     Transaction tx=session.beginTransaction();
     /**
      * 在获取客户的时候,批量抓取联系人
      * 客户与联系人是一对多的关系
      * 在Customer.hbm.xml中配置batch-size
      */
     List<Customer> list=session.createQuery("from Customer").list();
     for(Customer c:list){
         System.out.println(c.getName());
         for(LinkMan l:c.getLinkMans()){
             System.out.println(l.getName());
         }
     }

     tx.commit();
 }
  • 分析
    • 批量抓取涉及到关联级别的延迟加载,在查询出customer的时候并不会发送sql语句去查询其关联的联系人,而在需要使用联系人的时候才发送sql语句去查询
      *但是例如当batch-size=”2”时,也是在需要使用联系人的时候才发送sql语句去查询,不过查询的时候查询出了两个customer(customer1,customer2)对应的联系人(分别存入了对应的customer中)(也就是说customer2对应的联系人就不用延迟加载了,要用就可以直接用,因为已经发送过了查询语句)
      batch-size值(值越大发送语句越少)
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值