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抓取数据时,懒加载不去作用。

  • 相关阅读:
    SLS评测报告
    Flash对不同的浏览器的兼容性
    NodeJS的Cluster模块使用
    Varnish+Xcache构建高性能WEB构架初探
    Memcached Client的释疑
    Firebug及YSlow简介与使用图文详解
    PHP Memcached 实现简单数据库缓存
    PHP + Memcache 实现Session共享
    Linux 开机关机在线求助与指令输入
    Linux 基础学习篇笔记 Linux基础知识
  • 原文地址:https://www.cnblogs.com/forever2h/p/6739010.html
Copyright © 2011-2022 走看看