我知道这会Session.save()
持续存在瞬态对象。而且我看到它也有saveOrUpdate()
,还有persist()
。
我想那save()
相当于SQL INCLUDE
,是吗?
如果我有一个已经存在于 DB 上的对象并且我拥有save()
它,是否会包含另一行,是否会更新其字段,或者它会被忽略而没有任何反应?
save
和之间的区别saveOrUpdate
save
和saveOrUpdate
方法之间的主要区别在于save
生成一个新的标识符并INSERT
记录到数据库中,而saveOrUpdate
可以INSERT
根据记录的存在或者更新。因此save
将继续进行而不执行存在检查,另一方面saveOrUpdate
将检查是否存在,如果记录存在,它将被更新,否则将插入新记录。
persist
和的基本区别save
save
1)和之间的第一个区别persist
是它们的return
类型。与save
方法类似,persist
也INSERT
记录到数据库中,但返回类型persist
是void
,而返回类型save
是Serializable object
。
persist
2)和之间的另一个区别save
是这两种方法都使瞬态实例持久化。但是,persist
方法不保证标识符值将立即分配给持久实例,分配可能发生在刷新时间。
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.
我的建议是,您确实需要阅读此内容以进一步进行。
据我所知,它是这样发生的:
save()
只是在拯救你的实体persist()
正在将您的实例修改为托管实体。这意味着如果您对其进行操作并且您的交易仍处于打开状态,那么它将在您调用时自动保存flush()
(如果我没记错的话)merge()
还有一个类似persist()
的,但它返回一个新实例,而不是修改你的旧实例....saveOrUpdate()
你可以在这里看到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 .