当我读到hibernate'Persist'和'Save'方法之间的不同之处时,许多文章都突出强调了
“保存方法可以在事务边界外执行”
这句话让我很困惑,我读了足够的文章,了解这个的真正含义,但没有运气!现在我有以下几点要澄清。
问题1
这是真的吗? 如果是,那么
问题2
[假设交易意味着物理数据库交易]
据我所知,没有数据库执行可以在事务处理中发生,那么它在交易边界之外的含义是什么?
问题3
[假设交易意味着逻辑交易]
根据我所说的材料,“会话”规定了逻辑交易。因此,即使它使用persist()或save()来持久保存数据,它也会在显式提交或session.flush或关闭会话之后刷新并提交。
由于会话是逻辑事务,没有会话就无法执行,那么save()在事务外工作是什么意思?
如果有人能给我一个明确的详细答案,那将是一个很大的帮助 非常感谢!!!
答案 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事务之外。