美文网首页程序员
Hibernate检索策略

Hibernate检索策略

作者: 常威爆打来福 | 来源:发表于2017-10-07 19:54 被阅读0次

一 检索策略概念
1 hibernate检索策略分为两类
(1)立即查询:根据id查询,调用get方法,一调用get方法马上发送语句查询数据库

            //根据cid=1客户
            //执行get方法之后,是否发送sql语句
            //调用get方法马上发送sql语句查询数据库
            Customer customer = session.get(Customer.class,1);
            System.out.println(customer.getCid());

(2)延迟查询:根据id查询,调用load方法,调用load方法不会马上发送语句查询数据,只有得到对象里面的值时候才会发送语句查询数据库

            /*
            * 1 调用load方法之后,不会马上发送sql语句
            *   返回对象里面只有id值
            * 2 得到对象里面不是id的而是其他值时候才会发送语句
            * */
            Customer customer = session.load(Customer.class,1);
            System.out.println(customer.getCid());
            System.out.println(customer.getCustName());

2 延迟查询分为两类
(1)类级别延迟

根据id查询返回实体类对象,调用load方法不会马上发送语句
(2)关联级别延迟

查询某个客户,在查询这个客户的所有联系人,查询客户的所有联系人的过程是否需要延迟,这个过程称为关联级别延迟

默认延迟

二 关联级别延迟操作(在映射文件中进行配置实现)
1 根据客户得到所有联系人,在客户映射文件中配置

2 在set标签上使用属性
(1)fetch:值 select (默认)
(2) lazy:值

  • true:延迟 (默认)
默认设置
  • false:不延迟
false
  • 调用get之后,发送两条sql语句,分别查询客户和联系人

  • extra:及其延迟

extra
  • 要什么值发送什么查询语句

三 批量抓取
1 查询所有客户,返回list集合,遍历list集合,得到每个客户,得到每个客户的所有联系人

 @Test
    public void testSelect6(){
        Transaction tx = null;
        try {
            Session session= HibernateUtils.getSessionObject();
            tx = session.beginTransaction();
            //查询客户
            Criteria criteria= session.createCriteria(Customer.class);
            List<Customer> list = criteria.list();
            //得到每个客户里面所有联系人
            for(Customer customer:list){
                System.out.println(customer.getCid()+":"+customer.getCustName());
                //每个客户里面的联系人
                Set<LinkMan> linkMEN= customer.getSetlinkMan();
                for (LinkMan linkMan:linkMEN){
                    System.out.println(linkMan.getLkm_id()+":"+linkMan.getLkm_name());
                }
            }
            tx.commit();
        }catch (Exception e){
            e.printStackTrace();
            tx.rollback();
        }

    }

2 上面操作代码,发送多条查询语句,优化

优化
  • batch-size值,值越大发送语句越少

相关文章

  • Hibernate检索策略

    一 检索策略概念1 hibernate检索策略分为两类(1)立即查询:根据id查询,调用get方法,一调用get方...

  • Hibernate学习(检索策略)

    检索策略的概念 hibernate检索策略分为两类:(1)立即查询:根据id查询,调用get方法,一调用get方法...

  • Hibernate(十一)检索策略

    一、概述 检索数据时的 2 个问题: 不浪费内存:当 Hibernate 从数据库中加载 Customer 对象时...

  • Hibernate学习笔记 | Hibernate检索策略

    类级别的检索策略 类级别可选的检索策略包括立即检索和延迟检索,默认为延迟检索 立即检索:立即加载检索方法指定的对象...

  • Hibernate(十二)HQL检索方式

    一、Hibernate 检索方式 Hibernate 提供了以下几种检索对象的方式: 导航对象图检索方式: 根据已...

  • Hibernate学习14(检索策略)

    原则: 1.不浪费内存,只加载使用的数据 2.更高的查询效率,发送尽可能少的SQL语句 类级别检索策略 1.立即检...

  • Hibernate_9 检索策略

    目的 不浪费内存: 当 Hibernate 从数据库中加载 Customer 对象时, 如果同时加载所有关联的 O...

  • hiberante3-day3

    一、Hibernate 检索 hibernate 提供5种检索数据的方式导航对象图检索方式: 根据已经加载的对象...

  • Hibernate学习笔记 | 详解Hibernate检索方式

    Hibernate检索方式 Hibernate提供了以下几种检索对象的方式 导航对象图检索方式:根据已经加载的对象...

  • Hibernate(三) 检索方式和策略

    最近重新学习了一遍Hibernate框架,感觉收益颇多。学到最后不得不说下Hibernate的检索,为了提高检索速...

网友评论

    本文标题:Hibernate检索策略

    本文链接:https://www.haomeiwen.com/subject/dpfryxtx.html