博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Hibernate第八篇【懒加载】
阅读量:7087 次
发布时间:2019-06-28

本文共 889 字,大约阅读时间需要 2 分钟。


tags: Hibernate


前言

前面在使用Hibernate的时候就提及过了懒加载,但没有好好地说明具体的说明究竟是怎么回事...本博文主要讲解懒加载

什么是拦截器以及为什么要使用懒加载?

懒加载就是当使用数据的时候才去获取数据、执行对应的SQL语句...当还没用到数据的时候,就不加载对应的数据!

主要目的就是为了提高Hibernate的性能,提高执行效率

  • get: 及时加载,只要调用get方法立刻向数据库查询
  • load:默认使用懒加载,当用到数据的时候才向数据库查询。

懒加载再次体验

User user = (User) session.load(User.class, 1);        System.out.println("________");        System.out.println(user);复制代码

我们可以在对应的配置文件用通常lazy属性来设置

关闭懒加载:

复制代码

lazy有三个属性:

  • true 使用懒加载
  • false 关闭懒加载
  • extra (在集合数据懒加载时候提升效率)【只有在set、list等集合标签中使用】
    • 在真正使用数据的时候才向数据库发送查询的sql;
    • 如果调用集合的size()/isEmpty()方法,只是统计,不真正查询数据!

懒加载异常

当Session关闭后,就不能使用懒加载了,否则会报出异常

Exception in thread "main" org.hibernate.LazyInitializationException: could not initialize proxy - no Session复制代码

报出了这个异常,我们有4种方法解决:

  • 方式1: 先使用一下数据
    • dept.getDeptName();
  • 方式2:强迫代理对象初始化
    • Hibernate.initialize(dept);
  • 方式3:关闭懒加载
    • 设置lazy=false;
  • **方式4: 在使用数据之后,再关闭session! **

如果您觉得这篇文章帮助到了您,可以给作者一点鼓励

转载地址:http://hegml.baihongyu.com/

你可能感兴趣的文章
[转载] 七龙珠第一部——第080话 悟空对抗天龙
查看>>
Facebook账号被锁定怎么找回
查看>>
HTTP协议详解
查看>>
Maven学习总结(八)——使用Maven构建多模块项目
查看>>
css之防止出现因浏览器不同出现样式不同的情况
查看>>
MYSQL基本语句
查看>>
我的友情链接
查看>>
一、OkHttp请求方法
查看>>
Linux实用工具
查看>>
Maven学习总结(四)——Maven核心概念
查看>>
Java8 十大新特性详解
查看>>
多线程的同步介绍
查看>>
开源js框架中各种你看不懂的js语法解释大全!!
查看>>
Mysql学习总结(9)——MySql视图原理讲解与使用大全
查看>>
linux挂载ipsan服务器
查看>>
一个图灵API的调用
查看>>
DNS Server 3 子域的授权
查看>>
2013-05-25
查看>>
Initializing the Oracle ASMLib driver: [FAILED]
查看>>
innodb_force_recovery强制修复MySQL异常关闭问题
查看>>