Hibernate中不同的保存方式有什么区别?

2023-12-21

Hibernate 有一些方法可以以某种方式获取您的对象并将其放入数据库中。它们之间有什么区别,何时使用哪个,为什么没有一种智能方法知道何时使用什么?

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

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

以下是我对这些方法的理解。主要是这些基于API http://www.hibernate.org/hib_docs/v3/api/org/hibernate/Session.html尽管我在实践中并没有使用所有这些。

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

save持久化一个实体。如果标识符不存在,将分配一个标识符。如果这样做,它本质上是在进行更新。返回生成的实体 ID。

update尝试使用现有标识符持久保存实体。如果不存在标识符,我相信会引发异常。

保存或更新复制这已被弃用,不应再使用。相反有...

merge现在这就是我的知识开始动摇的地方。这里重要的是瞬态、分离和持久实体之间的区别。有关对象状态的更多信息,看看这里 http://docs.jboss.org/hibernate/core/3.6/reference/en-US/html/objectstate.html。通过保存和更新,您正在处理持久对象。它们链接到一个会话,以便 Hibernate 知道发生了什么变化。但是当你有一个瞬态对象时,就不涉及会话了。在这些情况下,您需要使用合并进行更新并使用坚持进行保存。

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

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Hibernate中不同的保存方式有什么区别? 的相关文章

随机推荐