博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Hibernate get 和 load方法区别
阅读量:6761 次
发布时间:2019-06-26

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

hot3.png

1 get的方法不支持lazy加载,而load方法默认情况下支持lazy(采用了CGLIB代理的方式)

2 get加载数据的时候,数据部存在返回null,而load方法返回ObjectNotFoundException 异常

另外: Hibernate 在提交事务的时候,会有一个flush()的操作,检查当前内存中数据的改动,会相应的生成sql语句。 比如:

Session session = factory.openSession();  session.beginTransaction();   User user = new User();  user.setName("张三");  session.save(user);  user.setName("李四");  session.getTransaction().commit();ps: 这样子的语句,实在发送了两条sql语句,在调用save()方法的时候产生一条insert语句,在commit()的时候,对比内存变动后,又产生一条update()语句。

3:由于load默认采用延迟加载,所以返回的结果是一个代理类,所以不支持多态查询。而get方法则支持多态查询。除非在建映射表的时候,把class标签里的lazy属性设置为false,那么load就能支持多态查询了。ps:另外通过hql语句查询也支持多态查询。

转载于:https://my.oschina.net/line926/blog/152545

你可能感兴趣的文章
HTML5解决跨域方案之postMessage
查看>>
[LeetCode] Remove Nth Node From End of List
查看>>
Java人员正确使用 IntelliJ IDEA的方式
查看>>
reactjs前端实践|第三篇:TodoList示例事件、state、props、refs
查看>>
Java final常量“无法更新”的问题
查看>>
ES6之"let"能替代"var"吗?
查看>>
手摸手,带你用vue撸后台 系列一(基础篇)
查看>>
分页模块
查看>>
一个Vue+Canvas的酷炫后台管理
查看>>
Node.js中exports和module.exports的区别
查看>>
使用Webcam实现拍照功能
查看>>
Java多线程笔记(三):线程池
查看>>
开源项目koa-router被叫卖,周下载10W+只要5000美元
查看>>
C++ 20的悲叹,未出世就被群嘲“劝退”
查看>>
一个react+redux工程实例
查看>>
使用Flutter之后,我们的CPU占用率降了50%
查看>>
基于vue的音乐播放器
查看>>
为什么DevOps和SRE职位这么难招人?
查看>>
某些编程语言更容易出错?研究人员提出质疑
查看>>
访谈《敏捷和精益项目集管理》的作者Johanna Rothman
查看>>