zoukankan      html  css  js  c++  java
  • 020 <one-to-one>、<many-to-one>单端关联上的lazy(懒加载)属性

    <one-to-one>、<many-to-one>单端关联上,可以取值:false/proxy/noproxy(false/代理/不代理)

    实例一:所有lazy属性默认(支持懒加载)

                session = HibernateUtils.getSession();

                tx = session.beginTransaction();

     

                //不发出SQL语句,支持lazy(懒加载)

                User user = (User) session.load(User.class, 3);

                //发出SQL语句,只加载普通属性,集合中的数据不会加载

                System.out.println("user.name=" + user.getName());

               

                //不会发出SQL语句,只返回代理类

                Group group = user.getGroup();

                //发出SQL语句,因为现在真正使用对象

                System.out.println("group.name=" + group.getName());

                tx.commit();

    实例二:将<many-to-one>中的lazy设置为false,其它默认

    session = HibernateUtils.getSession();

                tx = session.beginTransaction();

     

                //不会发出SQL

                User user = (User) session.load(User.class, 3);

                //会发出SQL,发出两条SQL,分别是User和组

                //因为<many-to-one>中的lazy=false,则会加载Group

                System.out.println("user.name=" + user.getName());

               

                //不会发出,已经在上面加载了数据

                Group group = user.getGroup();

                //不会发出,已经在上面加载了数据

                System.out.println("group.name=" + group.getName());

                tx.commit();

    实例三:将<class>中的lazy设置为false,其它默认

                session = HibernateUtils.getSession();

                tx = session.beginTransaction();

     

                //会发出SQL,因为<class>中的lazy=false

                User user = (User) session.load(User.class, 3);

                //不会发出SQL,已经在上面加载了

                System.out.println("user.name=" + user.getName());

               

                //不会发出,因为<class>标签上的lazy只对普通属性的影响

                //<class>标签上的lazy不会影响到单端关联上的lazy特性

                Group group = user.getGroup();

                //会发出,因为开始使用对象

                System.out.println("group.name=" + group.getName());

     

                tx.commit();

  • 相关阅读:
    文本域光标操作(选、添、删、取)的jQuery扩展
    jQuery插件,将内容插入到光标处
    onmouseout,mouseover经过子元素也触发的问题解决方案
    【M4】非必要不提供default 构造方法
    【M3】绝对不要以多态方式处理数组
    100亿个数字找出最大的10个
    【M2】最好使用C++转型操作符
    【M26】限制某个class所能产生的对象数量
    理解extern
    变量的属性
  • 原文地址:https://www.cnblogs.com/crazylqy/p/4079505.html
Copyright © 2011-2022 走看看