java – 在JPA中更新实体的最佳方式是什么?
发布时间:2020-11-18 12:29:58 所属栏目: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"); (编辑:甘南站长网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |