mst*_*rom 7 hibernate transactions
如果我有这个:
Start transaction1
Call someMethod
Start transaction2
Call someOtherMethod
Start tranaction3
Run Code Online (Sandbox Code Playgroud)
如果事务 3 回滚,事务 2 和事务 1 也会回滚吗?
谢谢!
虽然 Hibernate 没有明确支持嵌套事务,但使用能够创建保存点的JDBC 3.0 驱动程序可以实现这一点。
Connection创建时在程序开始处创建SessionFactory。此时,您还创建了一个Savepoint作为事务起点的。
然后您将浏览每个嵌套事务。对于每个嵌套事务,您应该创建另一个不同的保存点,即一个rollingSavePoint,您可以在该嵌套事务失败时回滚到该保存点。然后,对于同一嵌套事务,打开一个使用Connection您在开始时创建的会话(i.e. Session nestedTransaction = SessionFactory.openSession(connection))并进行更新。刷新会话并关闭它。
所有嵌套事务完成后,调用connection.commit()提交全局事务并关闭。像往常一样关闭 sessionFactory 并继续执行您需要执行的其他操作。
需要注意的一些事项:
READ_UNCOMMITED否则您可能会遇到锁定问题。如果您使用 Spring,您还可以使用 Spring Propagation。检查此链接 http://www.byteslounge.com/tutorials/spring-transaction-propagation-tutorial
| 归档时间: |
|
| 查看次数: |
9941 次 |
| 最近记录: |