【问题标题】:Hibernate Save() - 'Save Method' what is it mean by save() work outside the transaction?Hibernate Save() - 'Save Method' save() 在事务之外工作是什么意思?
【发布时间】:2018-05-30 10:40:19
【问题描述】:

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

问题 1

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

问题 2

[假设事务是指物理数据库事务]

据我所知,在没有事务的情况下不会发生数据库执行,那么事务边界之外是什么意思?

问题 3

[假设事务意味着逻辑事务]

根据我参考的材料,“会话”列出了逻辑事务。因此,即使它使用 persist() 或 save() 来持久化数据,它也只会在显式提交或 session.flush 或关闭会话后刷新和提交。

既然 session 是逻辑事务,没有 session 就无法执行,那么 save() 在事务外工作是什么意思?

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

【问题讨论】:

  • @BillyFrost 谢谢!我删除了标签
  • javadoc 肯定不会谈论这个。它将唯一的区别指定为save() 生成、分配和返回标识符。
  • @ewramner ,是的,我看过那个帖子,我的这个问题只有在阅读了该帖子中接受的答案后才会出现。这就是为什么我用特定的细节创建了这个线程。所以我不认为这是重复的。谢谢!

标签: java database hibernate rdbms


【解决方案1】:

这是一篇好文章,太长了无法复制:https://www.journaldev.com/3481/hibernate-session-merge-vs-update-save-saveorupdate-persist-example。本质上:

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

Q2:Transaction 是指 Hibernate 的事务,大概会话仍将使用一个事务处理数据库,但很短,可能是隐式的(自动提交)。

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

【讨论】:

  • 非常感谢
  • 我的荣幸。如果您认为问题已得到解答,请接受答案。
猜你喜欢
  • 2013-10-13
  • 2014-04-09
  • 2011-02-06
  • 1970-01-01
  • 2014-05-18
  • 2014-09-04
  • 2018-11-09
  • 1970-01-01
相关资源
最近更新 更多