Mule 3.3 spring 3.1 hibernate 3.6 事务管理

Posted

技术标签:

【中文标题】Mule 3.3 spring 3.1 hibernate 3.6 事务管理【英文标题】:Mule 3.3 spring 3.1 hibernate 3.6 transaction management 【发布时间】:2013-03-18 10:26:36 【问题描述】:

我正在开发一个涉及 mule、spring、hibernate 和注释的应用程序。我正在使用 org.springframework.orm.hibernate3.HibernateTransactionManager。现在的问题是:

我在 mule 中有某些组件,它们根据使用休眠的条件将数据记录到数据库中。我使用 @Transactional 插入少量数据,然后在方法范围完成时提交事务。但我想要的行为是:第一个组件根据某些条件插入数据,但事务不应该立即提交,我的第二个组件是一个 java 类应该再次插入一些数据,然后是第三个等等。如果任何一个组件都失败了在所有组件中执行的查询都应该回滚。所有这些组件都是独立的 java 类

我怎样才能实现这种行为。

谢谢你,

【问题讨论】:

【参考方案1】:

让你的整个组件执行链都在一个事务中。那么它将满足您的期望。如果您的所有组件都在同一个 spring 应用程序上下文中,则很容易做到这一点。在这种情况下,您需要做两件事:

    在你的组件类或需要在事务中的特定方法上添加@Transactional注解。默认情况下,事务方法使用REQUIRED传播设置,这将使执行链中的所有方法合并到一个事务中。

    确保 Spring 可以扫描所有组件。

    @Transactional @Component("lbsProviderApiCallJob") 公共类 LbsProviderApiCallJoImpl 实现 LbsProviderApiCallJob,ApplicationContextAware

如果您的所有组件都不在 spring 上下文中。制作起来很复杂。

【讨论】:

以上是关于Mule 3.3 spring 3.1 hibernate 3.6 事务管理的主要内容,如果未能解决你的问题,请参考以下文章

集成框架Spring Integration, Mule ESB or Apache Camel比较

MULE(AnyPoint Studio)中的Oracle数据源配置

Mule Persistent ActiveMQ RedeliveryPolicy

Spring5框架 笔记总结

Spring5框架 笔记总结

Spring 特性总览