• Hibernate批量抓取


    1、应用场景

      当我们想获取全部的商品类别,然后在获取所有类别下面的商品时,为了提高效率,就可以考虑使用批量抓取。

      批量抓取使用映射文件中的set标签的batch-size属性来设置,其值是任意一个整数,值越大效率越高。

      (1)不使用批量抓取实现效果:

        代码:

          

        @Test
            
            public void Test(){
                SessionFactory sessionFactory = null;
                Session session = null;
                Transaction tx = null;
                try {
                    sessionFactory = HibernateUtils.getFactory();
                    session = sessionFactory.openSession();
                    tx = session.beginTransaction();
                    //1、得到criteria对象
                     Criteria  criteria  = session.createCriteria(Sort.class);
                    //2、查询所有sort
                      List<Sort> list = criteria.list();
                    //3、遍历获取good
                      
                      for (Sort sort : list) {
                        System.out.println(sort);
                        Set<Good> goods = sort.getSetGoods();
                        for (Good good : goods) {
                            System.out.println(good);
                        }
                    }
                    
                    tx.commit();
                } catch (Exception e) {
                    tx.rollback();
                }finally{
                    session.close();
                    sessionFactory.close();
                }
            }

        执行效果:

          

             

    2、使用批量抓取效果

      1代码

        

        

    @Test
            
            public void Test(){
                SessionFactory sessionFactory = null;
                Session session = null;
                Transaction tx = null;
                try {
                    sessionFactory = HibernateUtils.getFactory();
                    session = sessionFactory.openSession();
                    tx = session.beginTransaction();
                    //1、得到criteria对象
                     Criteria  criteria  = session.createCriteria(Sort.class);
                    //2、查询所有sort
                      List<Sort> list = criteria.list();
                    //3、遍历获取good
                      
                      for (Sort sort : list) {
                        System.out.println(sort);
                        Set<Good> goods = sort.getSetGoods();
                        for (Good good : goods) {
                            System.out.println(good);
                        }
                    }
                    
                    tx.commit();
                } catch (Exception e) {
                    tx.rollback();
                }finally{
                    session.close();
                    sessionFactory.close();
                }
            }

        执行效果

                 

                 

    通过以上测试结果可以发现,使用批量抓取可以减少sql语句的发送,提高检索效率。

  • 相关阅读:
    web前端工程师
    java工程师
    原因原来默认预检测会检测是否存在多选框
    软件测试&安全测试高峰论坛
    安卓学习图
    为什么mongo中不能用int作为key
    历经小半宿吧。哎,终于搭建好了Linux-C的环境
    把昨晚写的东西完善了一下,还行,真差不多
    半宿了,仿写了个CList模板类,留着以后用吧
    今天复习了一下完成端口网络模型
  • 原文地址:https://www.cnblogs.com/jack1995/p/6953575.html
Copyright © 2020-2023  润新知