栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

CrudRepository findOne()和JpaRepository getOne()之间的区别

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

CrudRepository findOne()和JpaRepository getOne()之间的区别

只是一个猜测,但是在“纯JPA”中,有一个EntityManager的方法称为 getReference
。它旨在检索其中仅包含ID的实体。它的使用主要是为了指示引用的存在,而无需检索整个实体。也许代码可以告诉更多信息:

// em is EntityManagerDepartment dept = em.getReference(Department.class, 30);  // Gets only     entity with ID property, rest is nullEmployee emp = new Employee();emp.setId(53);emp.setName("Peter");emp.setDepartment(dept);dept.getEmployees().add(emp);em.persist(emp);

我假设 getOne 可以达到相同的目的。为什么生成的查询与您询问的相同?好吧,JPA圣经中的 AFAIR-Mike Keith和MerrickSchincariol编写的Pro JPA2- 几乎每个段落都包含类似“行为取决于卖方”的内容。

编辑:

我已经设定好自己的设定。最后,我得出的结论是,如果您以任何方式干扰使用 getOne
提取的实体(甚至转到entity.getId()),它将导致SQL被执行。尽管如果仅使用它来创建代理(例如,如上面代码中所示的关系指示符),则什么也不会发生,也不会执行其他SQL。因此,我假设在您的服务类中您对此实体进行了某些操作(使用getter进行记录),这就是为什么这两种方法的输出看起来相同的原因。

具有示例代码的ChlebikGitHub
有用的问题#1
有用的问题#2



转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/379826.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号