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语句的发送,提高检索效率。

  • 相关阅读:
    DEV控件GridControl常用属性设置(转)
    【649】shapely strtree STRtree 构建 RTree
    【648】计算直线间的夹角
    【646】灰度图array转为RGB三通道array
    【645】OpenCV 相关函数说明
    【644】二值图去掉面积小的部分 cv2.threshold
    Makefile中include、-include、sinclude
    openssh交叉编译
    四元数插值
    循环求余法
  • 原文地址:https://www.cnblogs.com/jack1995/p/6953575.html
Copyright © 2011-2022 走看看