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

  • 相关阅读:
    图像滤镜艺术---乐高像素拼图特效滤镜的代码实现
    假设你也23
    seajs载入流程图
    android 怎样将主菜单图标改成按安装时间排序
    热力学第一定律的社会学思考
    Django创建数据表
    KeyPress 和KeyDown 、KeyPress之间的区别
    Delphi 制作自定义数据感知控件并装入包(dpk文件)中(与DBText类似的数据感知控件)
    Delphi中的窗体创建与销毁
    Delphi ADOQuery连接数据库的查询、插入、删除、修改
  • 原文地址:https://www.cnblogs.com/jack1995/p/6953575.html
Copyright © 2020-2023  润新知