JPA的entityManager的find方法与getReference方法的区别
场景
JPA入门简介与搭建HelloWorld(附代码下载):
https://blog.csdn.net/BADAO_LIUMANG_QIZHI/article/details/103473937
注:
博客主页:
https://blog.csdn.net/badao_liumang_qizhi
关注公众号
霸道的程序猿
获取编程相关电子书、教程推送与免费下载。
实现
find
返回指定的 OID 对应的实体类对象,如果这个实体存在于当前的持久化环境,则返回一个被缓存的对象;否则会创建一个新的 Entity, 并加载数据库中相关信息;若 OID 不存在于数据库中,则返回一个 null。第一个参数为被查询的实体类类型,第二个参数为待查找实体的主键值。
getReference
与find()方法类似,不同的是:如果缓存中不存在指定的 Entity, EntityManager 会创建一个 Entity 类的代理,但是不会立即加载数据库中的信息,只有第一次真正使用此 Entity 的属性才加载,所以如果此 OID 在数据库不存在,getReference() 不会返回 null 值, 而是抛出EntityNotFoundException
单元测试
测试find方法
@Test
public void testFind() {Customer customer = entityManager.find(Customer.class, 3);System.out.println("-------------------------------------");System.out.println(customer);
}
测试结果
测试getReference方法
@Test
public void testGetReference(){Customer customer = entityManager.getReference(Customer.class, 3);System.out.println(customer.getClass().getName()); System.out.println("-------------------------------------"); System.out.println(customer);
}
通过上面的测试可知
find方法类似于hibernate中Session的get方法。
getReference方法类似于hibernate的Session的load方法。
find()做了一次select的操作,而getReference并没有做有关数据库的操作,而是返回一个代理,这样它就减少了连接数据库和从数据库加载持久状态的开销。
JPA的entityManager的find方法与getReference方法的区别相关推荐
- JPA的entityManager的find、getReference、persisit、remove方法的使用
场景 JPA入门简介与搭建HelloWorld(附代码下载): https://blog.csdn.net/BADAO_LIUMANG_QIZHI/article/details/103473937 ...
- jpa 删除是否成功_jpa delete无法删除 浅析JPA中EntityManager无法remove entity的问题 - 电脑故障 - 服务器之家...
jpa delete无法删除 浅析JPA中EntityManager无法remove entity的问题 发布时间:2017-03-21 来源:服务器之家 JPA对于维护双边关系操作其实已经有明确说明 ...
- 从Spring Data JPA访问EntityManager
Spring Data JPA允许您通过使用Repository接口来快速开发数据访问层. 有时,您需要从Spring Data JPA访问EntityManager. 这篇文章向您展示了如何访问En ...
- java baseentity_如何在JPA的BaseEntity中实现equals()和hashcode()方法?
我有一个BaseEntity类,它是我的应用程序中所有JPA实体的超类. @MappedSuperclass public abstract class BaseEntity implements S ...
- Spring Data JPA 从入门到精通~定义查询方法的配置方法
定义查询方法的配置方法 由于 Spring JPA Repository 的实现原理是采用动态代理的机制,所以我们介绍两种定义查询方法,从方法名称中可以指定特定用于存储的查询和更新,或通过使用 @Qu ...
- Go 学习笔记(34)— Go 方法声明、方法调用、方法值、方法表达式、切片对象方法、指针对象方法
1. 方法声明 Go 语言的方法非常纯粹, 可以看作特殊类型的函数, 其显式地将对象实例或指针作为函数的第一个参数, 并且参数名可以自己指定, 而不强制要求一定是 this 或 self .这个对象实 ...
- ajax post的回调函数另一个方法,jQueryajax–post()方法 - 米扑博客
jQuery ajax - post() 实例 请求 test.php 网页,忽略返回值: $.post("test.php"); 通过 AJAX POST 请求改变 div 元素 ...
- C++学习笔记24,方法重写与方法隐藏
该博文仅用于交流学习.请慎用于不论什么商业用途.本博主保留对该博文的一切权利. 博主博客:http://blog.csdn.net/qq844352155 转载请注明出处: 方法重写.是指在子类中又一 ...
- Java 8新特性——default方法(defenece方法)介绍
为什么80%的码农都做不了架构师?>>> 本文由 ImportNew - 黄小非 翻译自 blog.sanaulla.info.如需转载本文,请先参见文章末尾处的转载要求. 我 ...
最新文章
- 闪电网络真的是比特币最好的扩容解决方案吗?
- python常用8大算法
- Linux 调度器内幕
- linux上线tomcat安装目录,LINUX 下 tomcat的安装和配置
- XMPP 扎金花各种网络传送之音频发送
- 什么是浏览器同源策略?
- 【操作系统】—操作系统的概念 目标和功能
- 为 Elipse 下载windowsBuilder 实现窗口插件
- 酷信即时通讯源码,视酷即时通讯的升级版,性能高2-5倍,高性能企业即时通讯产品
- 解决uni-app小程序获取路由及路由参数
- 联想微型计算机怎么开盖,联想b520一体机拆机图解
- 手游运营数据监控指标浅谈
- 仿Excel冻结单元格效果
- 【数据库系统原理与应用/数据库系统概论】 期末复习手册
- python做卡牌游戏_python实现机器人卡牌
- Vue使用fabric图片缩放失效
- atrix 4g 安装linux,亲测ATRIX 4G MB860详细刷机教程二:解锁bootloader
- PUK 1028 WebNavigation
- 1000瓶无色无味的药水,其中有一瓶毒药,10只小白鼠拿过来做实验
- 从校园到职场 | YK菌的2022年中总结
热门文章
- RocketMQ(四):生产者消费者实践
- 利用NavicatPremium把Oracle迁移到MySQL
- 独占设备的分配和回收模拟_系统设计硬核知识(4)——操作系统的设备管理...
- java中实现将十六进制按位取反
- renderer的两种使用方式
- JavaWeb入门篇(6) 实现字符过滤器 解决全局字符乱码 实现模拟权限拦截
- python数值运算符也叫内置运算符_Python全栈工程师(数值类型、运算符)
- 奔图内部扫描错误13_现代浏览器内部揭秘(第三部分)
- java arraystoreexception_208道高频 Java面试题答案6
- c#控制台应用程序,如何实现隐藏DOS窗口