018 关联映射文件中<class>标签中的lazy(懒加载)属性
Lazy(懒加载):
只有在正真使用该对象时,才会创建这个对象
Hibernate中的lazy(懒加载):
只有我们在正真使用时,它才会发出SQL语句,给我们去查询,如果不使用对象则不会发SQL语句进行查询。
Hibernate中lazy(懒加载)的实现:
采用了第三方组件的库,这个库叫cglib.jar(比较流行),这个库对我们的类生成代理类(JDK的动态代理,只能对JDK中实现了接口的类进行代理),代理可以控制源对象并且可以对源对象的功能进行增强,而cglib.jar可以对类进行代理(cglib对我们的类进行继承,生成一个子类,这个子类作为代理类返回给你)。
只有你正真代理类的方法,则会查看你有没有加载目标对象,如果没有则会加载目标对象。
Lazy(懒加载)在hibernate何处使用:
1、<class>标签上,可以取值:true/false,(默认值为:true)
2、<property>标签上,可以取值:true/false,需要类增强工具
3、<set>、<list>集合上,可以取值:true/false/extra,(默认值为:true)
4、<one-to-one>、<many-to-one>单端关联上,可以取值:false/proxy/noproxy
Session.load()方法支持lazy,而session.get()不支持lazy;
Hibernate的lazy生效期:
生效期和session一样的,session关闭,lazy失效
hibernate支持lazy策略只有在session打开状态下有效。
<class>标签上,可以取值:true/false,(默认值为:true):
实例一:设置<class标签上的lazy=true(默认)
session = HibernateUtils.getSession();
tx = session.beginTransaction();
//执行此语并不会发SQL语句,只是返回一个代理类
Group group =(Group)session.load(Group.class, 1);
//不会发SQL语句,使用上面输入的1值
System.out.println("group.id=" + group.getId());
//此处使用对象,会发出SQL语句
System.out.println("group.name=" + group.getName());
//提交事务
tx.commit();
实例二:设置<class标签上的lazy=true(默认)
Session session = null;
Transaction tx = null;
Group group = null;
try {
session = HibernateUtils.getSession();
tx = session.beginTransaction();
group =(Group)session.load(Group.class, 1);
System.out.println("group.name=" + group.getName());
//提交事务
tx.commit();
} catch (Exception e) {
e.printStackTrace();
tx.rollback();
} finally {
HibernateUtils.closeSession(session);
} //不能正确输出,抛出了LazyInitalizationException异常,因为session已经关闭
//hibernate支持lazy策略只有在session打开状态下有效。 System.out.println("group.name=" + group.getName());
注:<class>标签上的lazy只影响到对象的普通属性。对其它(集合)属性不影响
018 关联映射文件中<class>标签中的lazy(懒加载)属性的更多相关文章
- 020 <one-to-one>、<many-to-one>单端关联上的lazy(懒加载)属性
<one-to-one>.<many-to-one>单端关联上,可以取值:false/proxy/noproxy(false/代理/不代理) 实例一:所有lazy属性默认(支持 ...
- 019 关联映射文件中集合标签中的lazy(懒加载)属性
<set>.<list>集合上,可以取值:true/false/extra,(默认值为:true) 实例一:(集合上的lazy=true(默认))class默认lazy=tru ...
- vue中页面卡顿,使用懒加载
为给客户更好的客户体验,首屏组件加载速度更快一些,解决白屏问题. 懒加载简单来说就是延迟加载或按需加载,即在需要的时候的时候进行加载. 常用的懒加载方式有两种:即使用vue异步组件 和 ES中的imp ...
- hibernate 中 fetch=FetchType.LAZY 懒加载失败处理
对这种懒加载问题,最后的做法是利用Spring提供的一个针对Hibernate的一个支持类,其主要意思是在发起一个页面请求时打开Hibernate的Session,一直保持这个Session,使得Hi ...
- hibernate之xml映射文件关系维护,懒加载,级联
一:关系维护 --->inverse默认值false,表示不放弃关系的维护. --->inverse="true"配置在那一端,表示那一端xml对应的po放弃关系的 ...
- hibernate中的懒加载和急加载
懒加载(FatchType.LAZY)是Hibernate为提高程序执行效率而提供的一种机制,简单说就是只有正真使用其属性的时候,数据库才会进行查询. 具体的执行过程就是:Hibernate从数据库获 ...
- Angular中懒加载一个模块并动态创建显示该模块下声明的组件
angular中支持可以通过路由来懒加载某些页面模块已达到减少首屏尺寸, 提高首屏加载速度的目的. 但是这种通过路由的方式有时候是无法满足需求的. 比如, 点击一个按钮后显示一行工具栏, 这个工具栏组 ...
- spring 加载属性(properties)文件
在开发的过程中,配置文件往往就是那些属性(properties)文件,比如使用properties文件配置数据库文件,又如database-config.properties 代码清单:databas ...
- html文件在head标签中引入js地址和直接写js代码,所用时间是不同的,因为引入js地址,文件加载的时候需要通过通讯协议去解析地址,读取外部文件
html文件在head标签中引入js地址和直接写js代码,所用时间是不同的,因为引入js地址,文件加载的时候需要通过通讯协议去解析地址,读取外部文件
随机推荐
- 神奇的marquee--滚动的文字
<!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title> ...
- python 自动化接口测试(6)
迎接新的一波更新吧,这次是基于图灵机器人的一个api接口的测试. 这是api的接口:http://www.tuling123.com/openapi/api 我们试着通过浏览器直接访问看下 这是反馈的 ...
- ViewPager—02图片无限轮播
布局文件 <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:t ...
- ls命令的20个实用范例
contents ls -l -h -lhS -l --block-size=M -a -d */ -g -G -n --color=never -i -p -r -R -t ls ~ ls --ve ...
- iOS项目中常见的文件
html,body,div,span,applet,object,iframe,h1,h2,h3,h4,h5,h6,p,blockquote,pre,a,abbr,acronym,address,bi ...
- Java中常用来处理时间的三个类:Date、Calendar、SimpleDateFormate,以及Java中的单例设计模式:懒汉式、饿汉式以及静态内部类式
(一)java.util.Date类 1.该类有一个long类型的属性:用来存放时间,是用毫秒数的形式表示,开始的日期是从1970年1月1号 00:00:00. 2.该类的很多方法都已经过时,不 ...
- 文本处理sed常用操作
文本处理sed常用操作 linux sed (stream editor) is a Unix utility that parses and transforms text, using a sim ...
- canvas与svg区别
canvas与svg区别 和SVG比起来有两个弱点,一个是画布里的内容是独立的,不能当成html元素:二是CANVAS是属于位图格式,而SVG是矢量图,可以平滑放大. HTML5的canvas画出来的 ...
- nodejs + nginx + ECS阿里云服务器环境设置
nodejs + nginx + ECS阿里云服务器环境设置 部署 nodejs ECS 基于 CentOS7.2 详细步骤:click 部署 nginx 安装 添加Nginx软件库: [root@l ...
- python入门编程之基础
Python, 是一种面向对象.解释型计算机程序设计语言.Python语法简洁清晰,特色之一是强制用空白符作为语句缩进.Python的设计哲学是"优雅"."明确" ...