当我试图理解 Hibernate Save 和坚持之间时,我遇到了这个解释:
persist() 定义明确。它使瞬态实例持久化。但是,它不能保证标识符值将立即分配给持久实例,分配可能发生在刷新时间。规范没有这么说,这是我对persist() 的问题。
persist() 还保证如果在事务边界之外调用它,它不会执行 INSERT 语句。这在具有扩展会话/持久性上下文的长时间运行的对话中很有用。
需要像 persist() 这样的方法。
save() 不保证相同,它返回一个标识符,如果必须执行 INSERT 来获取标识符(例如“身份”生成器,而不是“序列”),无论你是否在里面,这个 INSERT 都会立即发生或交易之外。这在具有扩展会话/持久性上下文的长期对话中不好。
你能帮我理解坚持说:
persist() 还保证如果在事务边界之外调用它,它不会执行 INSERT 语句。这在具有扩展会话/持久性上下文的长时间运行的对话中很有用。
这里的事务边界是什么?什么是长期对话?扩展会话/持久性上下文是什么意思?
也用于保存方法:
无论您是在事务内部还是事务外部,此 INSERT 都会立即发生。这在具有扩展会话/持久性上下文的长期对话中不好。
我知道如果我们在我的程序中使用 save 方法来保存对象,我们不需要像 session.beginTransaction() 和 session.getTransaction().commt() 这样的语句。如果声明在这里说同样的话,请告诉我。那么这在长时间的对话中有何用处呢?
我是hibernate的新手,很难理解这些差异,你能帮我理解这些差异吗?