<set><list>集合上,可以取值:true/false/extra,(默认值为:true)

实例一:(集合上的lazy=true(默认))class默认lazy=true(默认)

session = HibernateUtils.getSession();
tx = session.beginTransaction();
//不会发出SQL语句
Classes classes = (Classes)session.load(Classes.class, 1);
//发出SQL语句,因为在使用对象
System.out.println("classes.name=" + classes.getName()); //不会发SQL语句,只会返回一个代理类,因为没有使用对象
Set<Student> students = classes.getStudents();
//会发出SQL语句,因为使用了对象
for (Iterator<Student> iter = students.iterator();iter.hasNext();){
Student student = iter.next();
System.out.println(student.getName());
}
//提交事务 tx.commit();

实例二:集合上的lazy=true(默认)class已经设置懒加载,class默认lazy=true(默认)

session = HibernateUtils.getSession();

            tx = session.beginTransaction();
//不会发出SQL语句
Classes classes = (Classes)session.load(Classes.class, 1);
//发出SQL语句,因为在使用对象
System.out.println("classes.name=" + classes.getName());
//不会发SQL语句,只会返回一个代理类,因为没有使用对象
Set<Student> students = classes.getStudents();
//会发出SQL语句,发出查询全部数据的SQL,效率不高
System.out.println("student.count=" + students.size());
//提交事务 tx.commit();

实例三:集合上的lazy=false,其它保持默认class默认lazy=true(默认)

          //不会发出SQL语句,因为只设置了集合上的lazy为false,其它保持默认
Classes classes = (Classes)session.load(Classes.class, 1);
//发出两条SQL语句,分别加载classes和student
//并且把集合中的数据也加载上来(虽然并没有使用集合中的对象),因为设置了集合的lazy=false System.out.println("classes.name=" + classes.getName());
//不会发SQL语句,因为已经在前面加载了数据 Set<Student> students = classes.getStudents();
for (Iterator<Student> iter = students.iterator();iter.hasNext();){ Student student = iter.next(); System.out.println(student.getName()); }

实例四:集合上的lazy=false,其它保持默认class默认lazy=true(默认)

//不会发出SQL语句

        Classes classes = (Classes)session.load(Classes.class, 1);
//发出两条SQL语句,分别加载classes和student
//并且把集合中的数据也加载上来(虽然并没有使用集合中的对象),因为设置了集合的lazy=false
System.out.println("classes.name=" + classes.getName());
//不会发SQL语句,因为已经在前面加载了数据
Set<Student> students = classes.getStudents();
//不会发SQL语句,因为已经在前面加载了数据
System.out.println("student.count=" + students.size());

实例五:设置集合上lazy=extra,其它默认class默认lazy=true(默认)

session = HibernateUtils.getSession();

            tx = session.beginTransaction();
//不会发出SQL语句
Classes classes = (Classes)session.load(Classes.class, 1);
////发出两条SQL语句
System.out.println("classes.name=" + classes.getName()); //不会发出SQL语句,只返回代理类
Set<Student> students = classes.getStudents();
//会发出SQL语句
for (Iterator<Student> iter = students.iterator();iter.hasNext();){
Student student = iter.next();
System.out.println(student.getName());
}
//提交事务
tx.commit();

实例六:设置集合上lazy=extra,其它默认class默认lazy=true(默认)

session = HibernateUtils.getSession();
tx = session.beginTransaction()
//不会发出SQL语句
Classes classes = (Classes)session.load(Classes.class, 1);
//发出两条SQL语句
System.out.println("classes.name=" + classes.getName());
//不会发出SQL语句,只返回代理类
Set<Student> students = classes.getStudents();
//发出SQL语句,发出一条比较智能的SQL语句(select count(id) form t_student where classesid=?) //和lazy=true相比,效率高 System.out.println("student.count=" + students.size()); //提交事务 tx.commit();

019 关联映射文件中集合标签中的lazy(懒加载)属性的更多相关文章

  1. 018 关联映射文件中<class>标签中的lazy(懒加载)属性

    Lazy(懒加载): 只有在正真使用该对象时,才会创建这个对象 Hibernate中的lazy(懒加载): 只有我们在正真使用时,它才会发出SQL语句,给我们去查询,如果不使用对象则不会发SQL语句进 ...

  2. 020 <one-to-one>、<many-to-one>单端关联上的lazy(懒加载)属性

    <one-to-one>.<many-to-one>单端关联上,可以取值:false/proxy/noproxy(false/代理/不代理) 实例一:所有lazy属性默认(支持 ...

  3. vue中页面卡顿,使用懒加载

    为给客户更好的客户体验,首屏组件加载速度更快一些,解决白屏问题. 懒加载简单来说就是延迟加载或按需加载,即在需要的时候的时候进行加载. 常用的懒加载方式有两种:即使用vue异步组件 和 ES中的imp ...

  4. hibernate 中 fetch=FetchType.LAZY 懒加载失败处理

    对这种懒加载问题,最后的做法是利用Spring提供的一个针对Hibernate的一个支持类,其主要意思是在发起一个页面请求时打开Hibernate的Session,一直保持这个Session,使得Hi ...

  5. hibernate之xml映射文件关系维护,懒加载,级联

    一:关系维护 --->inverse默认值false,表示不放弃关系的维护.   --->inverse="true"配置在那一端,表示那一端xml对应的po放弃关系的 ...

  6. hibernate中的懒加载和急加载

    懒加载(FatchType.LAZY)是Hibernate为提高程序执行效率而提供的一种机制,简单说就是只有正真使用其属性的时候,数据库才会进行查询. 具体的执行过程就是:Hibernate从数据库获 ...

  7. Angular中懒加载一个模块并动态创建显示该模块下声明的组件

    angular中支持可以通过路由来懒加载某些页面模块已达到减少首屏尺寸, 提高首屏加载速度的目的. 但是这种通过路由的方式有时候是无法满足需求的. 比如, 点击一个按钮后显示一行工具栏, 这个工具栏组 ...

  8. spring 加载属性(properties)文件

    在开发的过程中,配置文件往往就是那些属性(properties)文件,比如使用properties文件配置数据库文件,又如database-config.properties 代码清单:databas ...

  9. html文件在head标签中引入js地址和直接写js代码,所用时间是不同的,因为引入js地址,文件加载的时候需要通过通讯协议去解析地址,读取外部文件

    html文件在head标签中引入js地址和直接写js代码,所用时间是不同的,因为引入js地址,文件加载的时候需要通过通讯协议去解析地址,读取外部文件

随机推荐

  1. Xcode的Architectures、Valid Architectures和Build Active Architecture Only属性(原创)

    最近xcode升级了5.1版本,升级之后程序报关于要适配arm64机器的错.之前对xcode的参数配置,一直不是很了解,但实现先面对问题了,就调查了一下并解决它. 一个一个来吧. Architectu ...

  2. JDBC基础学习(三)—处理BLOB类型数据

    一.BLOB类型介绍      在MySQL中,BLOB是一个二进制的大型对象,可以存储大量数据的容器,它能容纳不同大小的数据.      在MySQL中有四种BLOB类型.          实际使 ...

  3. POJ3592 Instantaneous Transference题解

    题意: 给一个矩形,矩形中某些点有一定数量的矿石,有些点为传送点,有些点为障碍.你驾驶采矿车(ore-miner truck,我也不知道是什么),从左上角出发,采尽量多的矿石,矿石不可再生.不能往左边 ...

  4. select下拉二级联动

    function opt(){ var id = $("#ids").val(); $.ajax({   type: "POST",  url: "$ ...

  5. Java基础学习

    1,基本类型和引用类型 基本类型就是一个盒子,数据本身就保存在盒子里面,引用类型的盒子里放的是数据的五:地址,通过这个地址来找到数据. 基本数据类型和堆中对象的引用保存在栈中,引用类型保存在堆中. 2 ...

  6. OC 常见面试题以及答案

    一. #improt 和include区别?@class? 1.include 主要用用来引用C 文件  import 主要引用OC 头文件  import 确保一个文件只能被导入一次  避免了交叉编 ...

  7. 这可能是php世界中最好的日志库——monolog

    由于一些历史原因,php中并没有内建的日志接口,故长期以来也没一个功能完备并且应用广泛的日志库.在我的工作生涯中,如果系统需要记录一些应用日志的话,基本上就是封装一个日志类,然后把一些要记录的字段写入 ...

  8. 如何修改dmesg log buffer size

    CONFIG_LOG_BUF_SHIFT: Kernel log buffer size (16 => 64KB, 17 => 128KB) General informations Th ...

  9. WebStorm设置左侧菜单栏背景和字体设置

    WebStorm左侧菜单栏 webstorm是一款前端IDE利器,个人感觉黑色的背景比较炫酷,刚开始从网上下载的主题只能修改编辑窗口的背景色,经过查询资料终于把左边菜单栏的背景色也修改了. 第一步:点 ...

  10. hadoop+hive+spark搭建(三)

    一.spark安装   因为之前安装过hadoop,所以,在“Choose a package type”后面需要选择“Pre-build with user-provided Hadoop [can ...