Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/hibernate/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 为什么使用session.beginTransaction&;transaction.commit_Java_Hibernate_Session_Transactions - Fatal编程技术网

Java 为什么使用session.beginTransaction&;transaction.commit

Java 为什么使用session.beginTransaction&;transaction.commit,java,hibernate,session,transactions,Java,Hibernate,Session,Transactions,休眠: 如果在hibernate会话中添加了任何临时对象,为什么在我关闭会话时hibernate不能将其持久化(在脏检查之后) 有这样的选择吗。 另外,如果存在这样的选项,那么为什么我们要开始一个事务&说它要提交。(session.beginTransaction()) transaction.commit()的功能也可以在我们说session.close()之后完成,对吗? 请任何人解释一下 对于正确使用RDBMS至关重要,这就是为什么需要使用Hibernate启动和提交事务 关于您的问题,您

休眠: 如果在hibernate会话中添加了任何临时对象,为什么在我关闭会话时hibernate不能将其持久化(在脏检查之后)

有这样的选择吗。 另外,如果存在这样的选项,那么为什么我们要开始一个事务&说它要提交。(session.beginTransaction())

transaction.commit()的功能也可以在我们说session.close()之后完成,对吗? 请任何人解释一下

对于正确使用RDBMS至关重要,这就是为什么需要使用Hibernate启动和提交事务

关于您的问题,您不能在关闭会话时隐式关闭事务,但通常的做法是在关闭事务后立即关闭会话。Hibernate以的形式为该模式提供了特殊支持


一些框架(Spring、EJB等)进一步消除了以编程方式开始和提交事务的需要——它们提供了声明性事务方法,允许您以声明方式将方法标记为事务性的。也就是说,当您输入这种方法时,它们会打开上下文会话(如果需要)并开始事务,当您从会话返回时,它们会提交事务并关闭会话(如果需要)。

session.beginTransaction用于启动事务,该事务可能包括一个或多个原始操作,如插入、选择、删除等。 而transaction.commit()用于提交事务期间发生的所有更改,以便操作后数据库保持一致状态