Hibernate有几种方法,它们以某种方式将对象放入数据库.它们之间的区别是什么,何时使用哪个,为什么只有一种智能方法不知道何时使用什么?

到目前为止,我确定的方法有:

  • save()
  • update()
  • saveOrUpdate()
  • saveOrUpdateCopy()
  • merge()
  • persist()

推荐答案

以下是我对这些方法的理解.这些主要是基于API,虽然我没有在实践中使用所有这些.

saveOrUpdate

save

update

saveOrUpdateCopy

merge 这就是我的知识开始动摇的地方.这里重要的是瞬时实体、分离实体和持久实体之间的区别.有关对象状态的更多信息,请拨打take a look here.使用SAVE&;UPDATE,您处理的是持久性对象.它们链接到一个会话,因此Hibernate知道发生了什么变化.但是,当您有一个临时对象时,不涉及会话.在这些情况下,您需要使用Merge进行更新,并使用Persistent进行保存.

persist

Java相关问答推荐

Java在模块化jar文件中找不到类,但是javap可以

scanner 如何在执行hasNextLine一次后重新读取整个文件?

Java Stream,需要更新列表对象列表

如何使用jooq generator将表名和列名映射为人类可读的?

使用意向过滤器从另一个应用程序启动服务

对某一Hyroby控制器禁用@cacheable

不推荐使用的Environment.getExternalStorageDirectory().getAbsolutePath()返回的值不同于新的getExternalFilesDir(空)?

使用Mockito进行的Junit测试失败

蒙蒂霍尔比赛结果不正确

如何使用值中包含与号的查询参数创建一个java.net.URI

内存和硬盘中的Zip不同,这会导致下载后的Zip损坏

Lombok@Nonnull是否也对供应商有影响?

buildDir:File!&#的getter解决方案是什么?39.被抛弃

IntelliJ IDEA依赖项工具窗口丢失

如果执行@BeForeEach#repository.save(),则测试中的UnitTest最终UUID会发生更改

验证没有';t work on Hibernate Entity';s字段

为什么Instant没有从UTC转换为PostgreSQL的时区?

设置背景时缺少Android编辑文本下划线

ResponseEntity.控制器截断响应的JSON部分

简化每个元素本身都是 map 列表的列表