前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Hibernate之延迟加载

Hibernate之延迟加载

作者头像
爱撒谎的男孩
发布2019-12-31 15:00:36
8860
发布2019-12-31 15:00:36
举报
文章被收录于专栏:码猿技术专栏码猿技术专栏

文章目录

  1. 1. hibernate之延迟加载
    1. 1.1. 什么是延迟加载
    2. 1.2. 好处
    3. 1.3. 如何使用延迟加载
    4. 1.4. 使用延迟加载需要注意的问题

hibernate之延迟加载

什么是延迟加载

  • 在使用某些Hibernate方法查询数据的时候,Hibernate返回的只是一个空对象(除了id外属性都为null),并没有真正的查询数据库。而是在使用这个对象的时候才会出发查询数据,并将查询到的数据注入到这个空对象中,这种查询时机推迟到对象访问时的机制称之为延迟加载。
  • 简单的说,使用延迟加载获取的对象,只有在获取其中的除了id之外的属性才会发出sql语句。

好处

  • 可以提升内存资源的使用率
  • 可以降低对数据库的访问次数

如何使用延迟加载

  • session.load()
  • query.iterate()
代码语言:javascript
复制
@Test
	public void Testload() {
		Session session = null;
		Transaction transaction = null;
		try {
			// 创建session
			session = HibernateUntil.getSession();
			// 开始事务
			transaction = session.beginTransaction();
			//使用延迟加载load()方法获取对象,这里并没有发出sql查询语句,其中除了一个id属性之外没有其他的属性
			Student student=session.load(Student.class,2);
			//查询其中的id属性,这里也没有发出查询语句
			System.out.println(student.getId());
			//查询对象中的name属性,这里将会发出查询的sql语句
			System.out.println(student.getName());
			// 提交事务
			transaction.commit();
		} catch (Exception exception) {
			transaction.rollback(); // 事务回滚
		} finally {
			if (session!=null) {
				session.close();
			}

		}
	}

使用延迟加载需要注意的问题

  • 采用延迟加载机制的操作,需要避免session的提前关闭。避免在使用对象之前关闭session
  • 因为在使用延迟加载的时候并没有发出sql查询语句,只有当使用其中的除了id属性之外的属性才会发出查询语句,因此这里的session不能提前关闭
本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2018-04-22,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • hibernate之延迟加载
    • 什么是延迟加载
      • 好处
        • 如何使用延迟加载
          • 使用延迟加载需要注意的问题
          领券
          问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档