java - 为什么要使用 session.beginTransaction & transaction.commit

标签 java hibernate session transactions

hibernate :
如果将任何 transient 对象添加到 hibernate session 中,为什么当我关闭 session 时不能 hibernate (在其脏检查之后)。

有没有这样的选择。
此外,如果存在这样的选项,那么为什么我们要开始交易并说它要提交。 (session.beginTransaction())

一旦我们说 session.close(),transaction.commit() 的哪些功能也可以完成,对吗?
请任何人向我解释这一点。

最佳答案

Transaction demarcation对于正确使用 RDBMS 至关重要,这就是您需要使用 Hibernate 启动和提交事务的原因。

关于您的问题,您不能在关闭 session 时隐式关闭事务,但有一种常见做法是在关闭事务后立即关闭 session 。 Hibernate 以 contextual sessions 的形式为这种模式提供了特殊支持。 .

一些框架(Spring、EJB 等)通过消除以编程方式开始和提交事务的需要而走得更远——它们提供声明性事务方法,允许您以声明方式将方法标记为事务性方法。也就是说,当您输入此类方法时,它们会打开上下文 session (如果需要)并开始事务,并在您从它返回时提交事务并关闭 session (如果需要)。

关于java - 为什么要使用 session.beginTransaction & transaction.commit,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10171856/

相关文章:

java - 如何让 Button 右对齐,而不被 TextView 重叠?

java - 从 RGB 数据的 int 数组创建 PNG 文件

java - 为什么带分页的 spring nativeQuery 会抛出 SQLGrammarException?

ios - iOS 是否具有与 Java 或 .NET 中的 session 类似的概念?

java - 更改隔离级别 - hibernate.connection.isolation 不起作用

java - 比较 "T extends Number"是否相等

java - 无法为 XAMPP 和 Eclipse IDE 创建请求的服务 [org.hibernate.engine.jdbc.env.spi.JdbcEnvironment]

java - 使用 JPA 存储库的 Hibernate 获取配置文件

c# - 超时和 session 超时问题

php - 安装 mediawiki 1.16.5 时如何设置 session.save_path 值