从下面的链接:
save() 方法不保证相同,它返回一个标识符,如果必须执行 INSERT 才能获取标识符(例如“身份”生成器),则此 INSERT 会立即发生,无论您是在内部还是在内部在事务之外。
http://javarevisited.blogspot.com/2012/09/difference-hibernate-save-vs-persist-and-saveOrUpdate.html
我有一个疑问:即使在事务之外,save方法如何立即插入?因为如果发生插入,则意味着它正在访问数据库,并且数据库操作怎么可能没有任何事务呢? AFAIK 事务的最小粒度是单个插入/更新/选择/删除语句。所以我需要澄清一下。
最佳答案
当从数据库中检索实体时,它会附加到 session 并保留为 session 的一部分 session 直到 session (及其事务)结束。同样地, 当添加或更新实体时,这些更改也会附加到 session 中,并且当 实体从数据库中删除,从 session 中删除。
但是,您的陈述(或您提供的任何链接)是真实的。
Hibernate save()
可以用于将实体保存到数据库。我们可以在事务之外调用此方法。如果我们在没有事务的情况下使用它,并且实体之间有级联,那么除非我们刷新 session ,否则只有主要实体会被保存。
您可以找到一个工作示例 here :
关于java - hibernate保存方法-事务之外,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41413063/