zoukankan      html  css  js  c++  java
  • 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语句的发送,提高检索效率。

  • 相关阅读:
    牛客 小乐乐和25
    codeforces 1303 D 二进制瞎搞
    codeforces 1307 D 最短路bz+贪心
    codeforces 1316 C math
    codeforces 1328E LCA
    codeforces 1335 E2 思维
    codeforces 1335 E1 思维
    codeforces 1342 D 贪心+后缀和
    codeforces 1348D (思维+贪心)
    codeforces 1362 E 进制的性质
  • 原文地址:https://www.cnblogs.com/jack1995/p/6953575.html
Copyright © 2011-2022 走看看