zoukankan      html  css  js  c++  java
  • hibernate 之 加载策略和抓取策略


    1. 加载策略:在hibernate中,hibernate为了查询效率,提供了2中加载策略,一种即时加载,另一种延迟加载(懒加载)。

    2.即时加载:查询数据时候,立即从数据库中将数据查询出来。

    get方法获取数据就是采用的即时加载:

    @Test
        public void testGet(){
            Student stu = (Student)session.get(Student.class, 1);
            System.out.println("================");
            System.out.println(stu.getName()+"---"+stu.getSex());
        }

    list方法采用的也是即时加载:

    @Test
        public void testList(){
            List<Student> list = session.createQuery("from Student").list();
            System.out.println("============");
        }

    3. 延迟加载:在调用方法查询数据时,不会立即到数据库中查询数据,只有真正用到数据的时候才会到数据库查询。

    @Test
        public void testLoad(){
            Student stu = (Student)session.load(Student.class, 1);
            System.out.println("================");
            System.out.println(stu.getId()+"---");
        }

    4. 懒加载:

      class 默认时 lazy=true

      Property默认是lazy=false的

      Many-to-one:默认是

                   Lazy=false 即时加载

          lazy=proxy懒加载

          lazy=no-proxy懒加载  不使用代理

           set: 默认

                   lazy=true 懒加载

                 lazy=extra 机智的加载方式,检查是否真正需要数据,如果仅仅是显示数据个数,那么不会加载数据,如果真正需要显示数据,那么加载数据

                  lazy=false即时加载

    5.抓取策略:指hibernate采用何种方式从数据库获取数据,大的方面有两类 selete 和 join 。

      select 抓取指 通过select语句来获取关联数据。

            <many-to-one name="teacher" column="tid" fetch="select"/>

      join抓取策略,指通过join来获取关联数据

            <many-to-one name="teacher" column="tid" fetch="join"/>

     注意:当采用join抓取数据时,懒加载不去作用。

  • 相关阅读:
    how to install VLC Player on Fedora 32 Workstation
    Centos 8.2 2004镜像地址
    Fedora 33 Workstation: x86_64 DVD ISO
    [听力/口语]每天十分鐘回音練習
    CSS设置背景色
    设置禁止子标签超出父标签产生了滚动条
    引用自定义的css或者js文件
    js 中使用typeof
    React native 之 Promise
    Mac升级系统后 Pod Install报错-不能用 解决办法
  • 原文地址:https://www.cnblogs.com/forever2h/p/6739010.html
Copyright © 2011-2022 走看看