java - hibernate保存方法-事务之外

标签 java hibernate

从下面的链接:

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/

相关文章:

java - 获取不同的谓词并从 RDF 中的谓词中提取前缀

java - 通过 JPA/Hibernate 中的 session 工厂创建类型化查询

java - Hibernate二级缓存(TreeCache)——用于子实体

hibernate - 非主键列的自动递增数字生成

java - 将 Hibernate 连接到两个数据库时出现问题

java - Hibernate/JPA - 注释 bean 方法和字段

java - 文件上传及读取

java - postman 没有在控制台中返回实际值

java - Spring Boot 单页应用程序在任何 URL 上进行路由

java - 如何将未转义的 XML 写入 XMLStreamWriter?