Hibernate保存方法 - 交易之外



从下面的链接:

save()方法不保证相同,它返回标识符,并且如果必须执行插入以获取标识符(例如"身份"生成器),则该插入立即发生,无论您是否在内部或内部或在交易之外。

http://javarevisited.blogspot.com/2012/09/difference-hibernate-save-vs-persist-persist-and-saveorupdate.html

我有疑问:即使在交易之外,如何保存方法插入即使它插入?因为如果发生插入,那意味着它正在击中数据库,并且如何成为数据库操作而没有任何事务?AFAIK交易的最小粒度是单个插入/update/select/delete语句。所以我需要澄清。

当从数据库中检索实体时,它将附加到会话上,并且仍然是该实体的一部分会话直到会话(及其交易)结束。同样地,添加或更新实体时,这些更改也将附加到会话中,当从数据库中删除实体,将其从会话中删除。

但是,您的声明(或您提供的任何链接)为真。

Hibernate save() 可以使用将实体保存到数据库中。我们可以在交易之外调用此方法。如果我们在没有交易的情况下使用它,并且在实体之间有级联,则只有主要实体才能保存,除非我们冲洗会话。

您可以在这里找到一个工作示例:

最新更新