在Spring / Hibernate环境中手动管理数据库事务

时间:2011-02-22 09:04:50

标签: java database hibernate spring transactions

我们有一个基于Spring的Web应用程序,它利用Hibernate将其实体加载/存储到底层数据库。

由于它是一个后端应用程序,我们不仅希望允许我们的UI,还允许第三方工具手动启动数据库事务。这就是呼叫者需要

的原因
  1. 调用StartTransaction方法,然后获取可以引用的ID
  2. 通过引用此ID来确定所有与数据库相关的调用(例如创建,修改,删除),以明确哪些操作属于已启动的事务
  3. 调用CommitTransaction方法向我们的后端发出信号,表示该交易现在可以提交(或者在负面情况下RollbackTransaction将被调用)
  4. 因此请记住,所有数据库处理都将通过Java持久性注释在内部完成,我们如何打开事务管理到我们的UI,其行为类似于无法直接访问后端实体但是交易的第三方应用程序仅限数据传输对象?

3 个答案:

答案 0 :(得分:2)

来自Spring Reference:Programmatic transaction management

答案 1 :(得分:0)

为什么不围绕“后端应用程序”构建服务,例如SOAP接口或REST接口。

使用此策略,您可以在后端管理您的交易

答案 2 :(得分:0)

我认为可以完成,但实施/验证将是一种巨大的痛苦。您基本上需要一个事务管理器,它不受“每线程事务”定义的约束,但跨越同一客户端的多个调用。

JTA +有状态会话bean可能是您想要查看的内容。