场景

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方法的区别相关推荐

  1. JPA的entityManager的find、getReference、persisit、remove方法的使用

    场景 JPA入门简介与搭建HelloWorld(附代码下载): https://blog.csdn.net/BADAO_LIUMANG_QIZHI/article/details/103473937 ...

  2. jpa 删除是否成功_jpa delete无法删除 浅析JPA中EntityManager无法remove entity的问题 - 电脑故障 - 服务器之家...

    jpa delete无法删除 浅析JPA中EntityManager无法remove entity的问题 发布时间:2017-03-21 来源:服务器之家 JPA对于维护双边关系操作其实已经有明确说明 ...

  3. 从Spring Data JPA访问EntityManager

    Spring Data JPA允许您通过使用Repository接口来快速开发数据访问层. 有时,您需要从Spring Data JPA访问EntityManager. 这篇文章向您展示了如何访问En ...

  4. java baseentity_如何在JPA的BaseEntity中实现equals()和hashcode()方法?

    我有一个BaseEntity类,它是我的应用程序中所有JPA实体的超类. @MappedSuperclass public abstract class BaseEntity implements S ...

  5. Spring Data JPA 从入门到精通~定义查询方法的配置方法

    定义查询方法的配置方法 由于 Spring JPA Repository 的实现原理是采用动态代理的机制,所以我们介绍两种定义查询方法,从方法名称中可以指定特定用于存储的查询和更新,或通过使用 @Qu ...

  6. Go 学习笔记(34)— Go 方法声明、方法调用、方法值、方法表达式、切片对象方法、指针对象方法

    1. 方法声明 Go 语言的方法非常纯粹, 可以看作特殊类型的函数, 其显式地将对象实例或指针作为函数的第一个参数, 并且参数名可以自己指定, 而不强制要求一定是 this 或 self .这个对象实 ...

  7. ajax post的回调函数另一个方法,jQueryajax–post()方法 - 米扑博客

    jQuery ajax - post() 实例 请求 test.php 网页,忽略返回值: $.post("test.php"); 通过 AJAX POST 请求改变 div 元素 ...

  8. C++学习笔记24,方法重写与方法隐藏

    该博文仅用于交流学习.请慎用于不论什么商业用途.本博主保留对该博文的一切权利. 博主博客:http://blog.csdn.net/qq844352155 转载请注明出处: 方法重写.是指在子类中又一 ...

  9. Java 8新特性——default方法(defenece方法)介绍

    为什么80%的码农都做不了架构师?>>>    本文由 ImportNew - 黄小非 翻译自 blog.sanaulla.info.如需转载本文,请先参见文章末尾处的转载要求. 我 ...

最新文章

  1. 闪电网络真的是比特币最好的扩容解决方案吗?
  2. python常用8大算法
  3. Linux 调度器内幕
  4. linux上线tomcat安装目录,LINUX 下 tomcat的安装和配置
  5. XMPP 扎金花各种网络传送之音频发送
  6. 什么是浏览器同源策略?
  7. 【操作系统】—操作系统的概念 目标和功能
  8. 为 Elipse 下载windowsBuilder 实现窗口插件
  9. 酷信即时通讯源码,视酷即时通讯的升级版,性能高2-5倍,高性能企业即时通讯产品
  10. 解决uni-app小程序获取路由及路由参数
  11. 联想微型计算机怎么开盖,联想b520一体机拆机图解
  12. 手游运营数据监控指标浅谈
  13. 仿Excel冻结单元格效果
  14. 【数据库系统原理与应用/数据库系统概论】 期末复习手册
  15. python做卡牌游戏_python实现机器人卡牌
  16. Vue使用fabric图片缩放失效
  17. atrix 4g 安装linux,亲测ATRIX 4G MB860详细刷机教程二:解锁bootloader
  18. PUK 1028 WebNavigation
  19. 1000瓶无色无味的药水,其中有一瓶毒药,10只小白鼠拿过来做实验
  20. 从校园到职场 | YK菌的2022年中总结

热门文章

  1. RocketMQ(四):生产者消费者实践
  2. 利用NavicatPremium把Oracle迁移到MySQL
  3. 独占设备的分配和回收模拟_系统设计硬核知识(4)——操作系统的设备管理...
  4. java中实现将十六进制按位取反
  5. renderer的两种使用方式
  6. JavaWeb入门篇(6) 实现字符过滤器 解决全局字符乱码 实现模拟权限拦截
  7. python数值运算符也叫内置运算符_Python全栈工程师(数值类型、运算符)
  8. 奔图内部扫描错误13_现代浏览器内部揭秘(第三部分)
  9. java arraystoreexception_208道高频 Java面试题答案6
  10. c#控制台应用程序,如何实现隐藏DOS窗口