我知道Session.save()持久化 transient 对象。我看到它也有saveOrUpdate(),还有persist()。那么save()就等于SQL INCLUDE,对吗?如果我有一个已经存在于数据库中的对象,我save()它,另一行会被包含吗?它的字段会被更新吗?或者它会被忽略而什么都不发生吗?
Session.save()
saveOrUpdate()
persist()
save()
SQL INCLUDE
ekqde3dh1#
save和saveOrUpdate的区别
save
saveOrUpdate
save和saveOrUpdate方法之间的主要区别是save生成一个新的标识符和INSERT记录到数据库中,而saveOrUpdate可以根据记录的存在来生成INSERT或UPDATE。因此save将继续执行而不执行存在检查,另一方面saveOrUpdate将检查是否存在,如果记录存在,则将更新记录,否则将插入新记录。
INSERT
UPDATE
persist和save的基本区别
persist
return
void
Serializable object
rfbsl7qr2#
this answer:
保存保存实体。将分配一个标识符(如果不存在)。如果有,它基本上是在做更新。返回实体的生成ID。
我建议你阅读链接的答案以获取更多信息。
but5z9lq3#
据我所知是这样的:
flush()
merge()
xxhby3vn4#
保存()方法将记录插入数据库。但是saveorupdate()方法检查pk,如果pk被找到,那么它更新数据,否则将数据插入数据库。
4条答案
按热度按时间ekqde3dh1#
save
和saveOrUpdate
的区别save
和saveOrUpdate
方法之间的主要区别是save
生成一个新的标识符和INSERT
记录到数据库中,而saveOrUpdate
可以根据记录的存在来生成INSERT
或UPDATE
。因此save
将继续执行而不执行存在检查,另一方面saveOrUpdate
将检查是否存在,如果记录存在,则将更新记录,否则将插入新记录。persist
和save
的基本区别save
和persist
之间的第一个区别是它们的return
类型。与save
方法类似,persist
也将INSERT
记录到数据库中,但persist
的返回类型为void
,而save
的返回类型为Serializable object
。persist
和save
之间的另一个区别是,这两种方法都使 transient 示例持久化。但是,persist
方法不能保证标识符值会立即分配给持久化示例,分配可能发生在刷新时。rfbsl7qr2#
this answer:
保存保存实体。将分配一个标识符(如果不存在)。如果有,它基本上是在做更新。返回实体的生成ID。
我建议你阅读链接的答案以获取更多信息。
but5z9lq3#
据我所知是这样的:
save()
只是保存您的实体persist()
正在将示例修改为托管实体。这意味着,如果你做了一个操作,你的交易仍然是开放的,那么它将自动保存时,你调用flush()
(如果我没有弄错)merge()
还有一个类似于persist()
,但它返回一个新示例,而不是修改旧示例。saveOrUpdate()
您可以see herexxhby3vn4#
保存()方法将记录插入数据库。但是saveorupdate()方法检查pk,如果pk被找到,那么它更新数据,否则将数据插入数据库。