【发布时间】:2011-01-06 23:27:10
【问题描述】:
为了避免 XA 开销,我在项目 A 中添加了一些表名前缀,并将其推出到与项目 B 相同的 mysql 数据库中,这样我就可以使用相同的连接 - 并希望获得完整的原子性等。
虽然项目 A 和 B 具有非常不同的会话工厂配置。我为项目 B 配置了一个 HibernateTransactionManager,而 A 只是使用 TransactionSynchronizationManager.hasResource(sessionFactoryA) 加入事务的 OSiV 样式代码。
这在概念上有效吗?我只是在A中尝试了一个断点,然后等待,然后继续,超时导致B回滚,但A仍然提交!!?
什么给了?感谢您的帮助。
【问题讨论】:
-
我意识到需要使用相同的连接......这让我想到,提供一个自定义的 hibernate.current_session_context_class 可以查找不同的 sessionFactory 以返回相同的连接怎么样?跨度>
-
好的。 hibernate.current_session_context_class 不合适,但是 hibernate.connection.provider_class 合适!我可以实现这一点并让 getConnection "return staticSessionFactoryB.getCurrentSession().connection();"我的设置不需要内部事务等,并且默认 on_close 会话的连接在 tx 端工作,所以一切看起来都很好。我有一个真正的共享资源。如果您看到任何叮当声,请通知我!也许这就是帕斯卡在下面提到的?
标签: java hibernate spring sessionfactory