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();

  • 相关阅读:
    MapGuide 资源
    mac 安装brew
    mysql 设置外键约束SET FOREIGN_KEY_CHECKS=1
    一文深入讲解redis和couchbase的区别
    mac 显示 sh3.2# 的
    DBA整理的万字详解MySQL性能优化,值得收藏!
    redis和couchbase的比较
    && 运算符的使用
    freeotp 安装及使用过程
    Couchbase vs Redis,究竟哪个更胜一筹?
  • 原文地址:https://www.cnblogs.com/crazylqy/p/4079505.html
Copyright © 2011-2022 走看看