020 单端关联上的lazy(懒加载)属性

时间:2021-10-31 19:44:31

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

020 <one-to-one>、<many-to-one>单端关联上的lazy(懒加载)属性的更多相关文章

  1. webpack4 系列教程&lpar;四&rpar;&colon; 单页面解决方案--代码分割和懒加载

    本节课讲解webpack4打包单页应用过程中的代码分割和代码懒加载.不同于多页面应用的提取公共代码,单页面的代码分割和懒加载不是通过webpack配置来实现的,而是通过webpack的写法和内置函数实 ...

  2. swift -- 单例&plus; lazy懒加载 &plus; 第三方库

    //工具类单例 static let goods : NHGoods = { let good = NHGoods() return good }() //懒加载 lazy var registerB ...

  3. vue项目中,单页图片过多,使用懒加载

    最近做项目,一页图片很多,加载的时候效果很差. 通过学习借鉴其他大神的方法,使用了插件vue-lazyload,使用这个插件,界面更美观了,加载的效果好起来. 安装 npm i vue-lazyloa ...

  4. 【Spring源码分析】非懒加载的单例Bean初始化过程(上篇)

    代码入口 上文[Spring源码分析]Bean加载流程概览,比较详细地分析了Spring上下文加载的代码入口,并且在AbstractApplicationContext的refresh方法中,点出了f ...

  5. 【Spring源码分析】非懒加载的单例Bean初始化过程(下篇)

    doCreateBean方法 上文[Spring源码分析]非懒加载的单例Bean初始化过程(上篇),分析了单例的Bean初始化流程,并跟踪代码进入了主流程,看到了Bean是如何被实例化出来的.先贴一下 ...

  6. 【Spring源码分析】非懒加载的单例Bean初始化前后的一些操作

    前言 之前两篇文章[Spring源码分析]非懒加载的单例Bean初始化过程(上篇)和[Spring源码分析]非懒加载的单例Bean初始化过程(下篇)比较详细地分析了非懒加载的单例Bean的初始化过程, ...

  7. 单例设计模式Singleton之懒加载模式&lpar;懒汉模式&rpar;【原】

    单例设计模式Singleton之懒加载模式(懒汉模式) SingletonLazy.java类 package kingtool; import kingtool.http.IPTool; publi ...

  8. Spring源码分析:非懒加载的单例Bean初始化前后的一些操作

    之前两篇文章Spring源码分析:非懒加载的单例Bean初始化过程(上)和Spring源码分析:非懒加载的单例Bean初始化过程(下)比较详细地分析了非懒加载的单例Bean的初始化过程,整个流程始于A ...

  9. Spring源码分析:非懒加载的单例Bean初始化过程(下)

    上文Spring源码分析:非懒加载的单例Bean初始化过程(上),分析了单例的Bean初始化流程,并跟踪代码进入了主流程,看到了Bean是如何被实例化出来的.先贴一下AbstractAutowireC ...

随机推荐

  1. Java学习01

    Java学习01 第一章 1.JRE与JDK JDK(JAVA Develop Kit,JAVA开发工具包)提供了Java的开发环境和运行环境,主要用于开发JAVA程序,面向Java程序的开发者; J ...

  2. JMeter数据库操作详解

    Jmeter提供了JDBC连接的插件,通过执行SQL语句的java API,实现对数据库的访问和查询,同时可以操作一次向数据库插入上百条上千条数据. 一.安装驱动包 将需要连接JDBC的jar包放入j ...

  3. Linux内核打印时间戳

    较为简单可行的方式是通过PrintkTime功能为启动过程的所有内核信息增加时间戳,便于汇总分析.PrintkTime最早为CELF所提供的一个内核补丁,在后来的Kernel 2.6.11版本中正式纳 ...

  4. 复习HTML&plus;CSS(5)

    n  <meta>标记 <meta>的主要作用,是提供网页的源信息.比如:指定网页的搜索关键字 <meta>标记有两个属性:http-equiv和name. 1. ...

  5. 带&commat;的css语法,你知道多少?

    前言 css的顶层样式表由两种规则组成的规则列表构成,一种称为at—rule规则,也就是at规则,另一种是qualified rule,也就是普通规则.今天就学习一下at规则 正文 @charset ...

  6. WordPress留言本插件推荐

    WordPress不借助于任何插件也可以做个留言本,那就是建个 Page, 直接使用它的评论功能即可,而且给评论加上 Ajax 功能.WYSIWYG.引用.回复.留言分页等功能也可以做的很漂亮.但对于 ...

  7. forbidden

  8. php 共享内存学习&lpar;shmop函数&rpar;

    问题:希望可以在进程间共享变量,为共享数据提供快速访问 解决方案:除了可以使用APC模块,还可以用shmop或System V共享内存 //创建键 //将一个可访问的文件路径名转换为一个可供 shmo ...

  9. java------HashMap与HashSet的区别

    HashMap和HashSet的区别是Java面试中最常被问到的问题.如果没有涉及到Collection框架以及多线程的面试,可以说是不完整.而Collection框架的问题不涉及到HashSet和H ...

  10. Shell脚本之:case

    case ... esac 与其他语言中的 switch ... case 语句类似,是一种多分枝选择结构. case语句的语法 case 值 in 模式1) command1 command2 co ...