当前位置: 首页 > 面试题库 >

Hibernate中不同的保存方法之间有什么区别?

都浩淼
2023-03-14
问题内容

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

到目前为止,我已经确定的方法是:

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

问题答案:

这是我对方法的理解。这些主要基于API,尽管我在实践中并未全部使用。

saveOrUpdate 根据某些检查调用保存或更新。例如,如果不存在标识符,则调用save。否则,将调用更新。

保存 保持实体。如果不存在,将分配一个标识符。如果有的话,它实际上是在进行更新。返回生成的实体ID。

更新 尝试使用现有标识符持久化实体。如果不存在标识符,则认为会引发异常

saveOrUpdateCopy 已过时,不应再使用。相反,有…

合并
现在这是我的知识开始动摇的地方。这里重要的是临时实体,分离实体和持久实体之间的区别。有关对象状态的更多信息,请在此处查看。使用保存和更新,您可以处理持久对象。它们链接到会话,因此Hibernate知道发生了什么变化。但是,当您有一个临时对象时,就不会涉及会话。在这些情况下,您需要使用merge进行更新,并坚持保存。

持久 如上所述,它用于瞬态对象。它不返回生成的ID。



 类似资料:
  • 问题内容: 我已经看到以下将JavaScript代码放入标签中的方法: 我了解尝试放置有效URL而不只是JavaScript代码的想法,以防万一用户未启用JavaScript。但是出于讨论的目的,我需要假定JavaScript已启用(没有JavaScript,他们将无法登录)。 我个人喜欢选项2,因为它使您可以看到要运行的内容–在调试将参数传递到函数的位置时特别有用。我已经使用了很多,还没有发现浏

  • 问题内容: 我在Docker上玩了几天,我已经制作了一些图像(这真的很有趣!)。现在,我想继续我的工作,来到and 命令,但是我不完全理解它们。 和Docker有什么区别? 问题答案: 简短的答案是: 将获取映像:对于VM或物理服务器,将是安装.ISO映像或磁盘。基本操作系统。 它将打包构建图像所需的所有链的层和元数据。然后,您可以将此“保存的”图像链加载到另一个docker实例中,并从这些图像创

  • 问题内容: 我尝试了几种向表添加滚动的方法,但是只有其中一种可以正常工作。它们之间有什么区别? 第一: 第二: 第三: 第四: 问题答案: Element.scrollIntoView() 方法将调用该元素的元素滚动到浏览器窗口的视口中。 句法: //布尔参数 //对象参数 您的用例: :这行代码会将元素滚动到浏览器窗口的可见区域。 :此代码行将滚动元素以使其与可滚动祖先的视口顶部对齐。此选项对应

  • 问题内容: 我正在制作一个简单,非常轻便的前控制器。我需要将请求路径匹配到不同的处理程序(操作),以便选择正确的处理程序。 在我的本地计算机上并返回相同的结果。但是我不确定他们将在生产环境中返回什么。 那么,这些方法有什么区别,我应该选择什么? 问题答案: 给出URI后面的额外路径信息,用于访问Servlet,其中给出完整的URI。 我本以为它们会有所不同,因为首先必须为Servlet配置自己的U

  • 问题内容: 我一直以为功能和方法是相同的,直到我通过“ Swift编程语言”电子书学习Swift 之前。我发现我 不能greet(“John”, “Tuesday”)用来调用在类中声明的函数, Here is the code:- 当我在Objective-C中编程时,我从未意识到这种差异。 Swift中的函数和方法之间有什么区别? 在Swift中什么时候使用函数以及何时使用方法? 问题答案: 经

  • 问题内容: 我对不同的Java框架感到非常困惑。我想创建一个Java服务器项目来提供一些Restful Web服务,但是我真的不知道我应该选择哪种框架。JSF,EJB,Hibernate和Spring有什么区别?请帮助我更多地了解它们。 问题答案: 这些是不同层的框架。 JSF 用于视图(Web)层,它是一个像Wicket或Tapestry这样的面向组件的框架(页面的每个部分都是一个组件,都有状态