java – 在JPA中更新实体的最佳方式是什么?
发布时间:2020-11-18 07:55:01 所属栏目:Java 来源:互联网
导读:我正在使用JPA进行一些CRUD操作.要更新一个正确的方法吗? 通过更新查询或通过查找EntityManager的方法? 我有一个我需要更新的Employee对象.哪个是正确的方法?为方便起见,find方法很好,所以我使用了find()方法. 请指导我 在Query API上使用executeUpdate()
我正在使用JPA进行一些CRUD操作.要更新一个正确的方法吗? 通过更新查询或通过查找EntityManager的方法? 请指导我 解决方法在Query API上使用executeUpdate()更快,因为它绕过了持久化上下文.然而,旁路持久上下文会导致内存中的实例状态,DB中该记录的实际值不会同步.请考虑以下示例: Employee employee= (Employee)entityManager.find(Employee.class,1); entityManager .createQuery("update Employee set name = 'xxxx' where id=1") .executeUpdate(); 刷新后,DB中的名称将更新为新值,但内存中的员工实例仍保持原始值.您必须调用entityManager.refresh(employee)才能将更新的名称从DB重新加载到员工实例.如果您的代码仍然需要在刷新后运算符工实例,但您忘记刷新()员工实例,因为员工实例仍然包含原始值,这听起来很奇怪. 通常,在批量更新过程中使用executeUpdate(),因为它更快,因为绕过持久上下文 更新实体的正确方法是,您只需设置要通过设置器更新的属性,并让JPA在刷新期间生成更新SQL,而不是手动编写. Employee employee= (Employee)entityManager.find(Employee.class,1); employee.setName("Updated Name"); (编辑:鲜蔬坊站长网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
相关内容
- 多线程 – 在Delphi 2006控制台应用程序中,TThread的工作方
- 详解JAVA抓取网页的图片,JAVA利用正则表达式抓取网站图片
- JavaFX – 如何创建SnapShot /(invisble)WebView的屏幕截图
- java.text.SimpleDateFormat中的奇怪的行为,期望yyyyMMdd给
- java – 如何以相反的顺序打印树形图
- java – 如何使用GSON / JSON将字符串数组转换为对象?
- java – 在方法参数中使用NotNull注释
- java – 匕首2麻烦@注入FirebaseMessagingService
- java – 在HashMap的ArrayList中搜索HashMap
- 利用反射获取Java类中的静态变量名及变量值的简单实例
推荐文章
站长推荐
- Java发送带html标签内容的邮件实例代码
- java 线程中start方法与run方法的区别详细介绍
- java – Hibernate on Oracle:将String属性映射
- java – 在实现带有生成ids的实体的equals()时,最
- java.lang.IllegalStateException:在onSaveInst
- 序列化 – 当我使用ArrayList时,如何保持GWT试图
- 自己动手写的mybatis分页插件(极其简单好用)
- 虽然Java中的Serializable接口没有方法,没有字段
- JAVA Swing客户端,对远程数据库的数据访问;伊巴
- 浅谈java中BigDecimal的equals与compareTo的区别
热点阅读