22

我知道这会Session.save()持续存在瞬态对象。而且我看到它也有saveOrUpdate(),还有persist()

我想那save()相当于SQL INCLUDE,是吗?

如果我有一个已经存在于 DB 上的对象并且我拥有save()它,是否会包含另一行,是否会更新其字段,或者它会被忽略而没有任何反应?

4

4 回答 4

22

save和之间的区别saveOrUpdate

savesaveOrUpdate方法之间的主要区别在于save生成一个新的标识符并INSERT记录到数据库中,而saveOrUpdate可以INSERT根据记录的存在或者更新。因此save将继续进行而不执行存在检查,另一方面saveOrUpdate将检查是否存在,如果记录存在,它将被更新,否则将插入新记录。

persist和的基本区别save

save1)和之间的第一个区别persist是它们的return类型。与save方法类似,persistINSERT记录到数据库中,但返回类型persistvoid,而返回类型saveSerializable object

persist2)和之间的另一个区别save是这两种方法都使瞬态实例持久化。但是,persist方法不保证标识符值将立即分配给持久实例,分配可能发生在刷新时间。

于 2013-03-05T14:40:55.537 回答
6
     save Persists an entity. Will assign an identifier if one doesn't exist.
     If one does, it's essentially doing an update. 
     Returns the generated ID of the entity.

我的建议是,您确实需要阅读内容以进一步进行。

于 2013-03-05T14:44:18.580 回答
2

据我所知,它是这样发生的:

  1. save()只是在拯救你的实体
  2. persist()正在将您的实例修改为托管实体。这意味着如果您对其进行操作并且您的交易仍处于打开状态,那么它将在您调用时自动保存flush()(如果我没记错的话)
  3. merge()还有一个类似persist()的,但它返回一个新实例,而不是修改你的旧实例....
  4. saveOrUpdate()你可以在这里看到
于 2013-03-05T14:42:30.423 回答
1

save() method insert the record into database . but saveorupdate() method check the pk if pk is found then it's update the data else insert the data into database .

于 2013-10-11T05:22:56.640 回答