Hibernate Save() - '保存方法'在事务之外的save()工作是什么意思?

时间:2018-05-30 10:40:19

标签: java database hibernate rdbms

当我读到hibernate'Persist'和'Save'方法之间的不同之处时,许多文章都突出强调了   “保存方法可以在事务边界外执行”
这句话让我很困惑,我读了足够的文章,了解这个的真正含义,但没有运气!现在我有以下几点要澄清。

问题1

这是真的吗? 如果是,那么

问题2

[假设交易意味着物理数据库交易]

据我所知,没有数据库执行可以在事务处理中发生,那么它在交易边界之外的含义是什么?

问题3

[假设交易意味着逻辑交易]

根据我所说的材料,“会话”规定了逻辑交易。因此,即使它使用persist()或save()来持久保存数据,它也会在显式提交或session.flush或关闭会话之后刷新并提交。

由于会话是逻辑事务,没有会话就无法执行,那么save()在事务外工作是什么意思?

如果有人能给我一个明确的详细答案,那将是一个很大的帮助 非常感谢!!!

1 个答案:

答案 0 :(得分:1)

这是一篇很难复制的文章:https://www.journaldev.com/3481/hibernate-session-merge-vs-update-save-saveorupdate-persist-example。实质上:

Q1:是的,这是真的。这意味着您可以在未事先完成session.save(object)的情况下致电session.beginTransaction()。你仍然必须有一个开放的会话。

Q2:事务是指Hibernate的事务,可能是会话仍然会使用一个事务对数据库,但是一个很短的事务,也许是隐式的(自动提交)。

问题3:这意味着在beginTransaction启动的Hibernate事务之外。