我有一个使用Neo4j图形数据库和Postgresql关系数据库的Spring应用程序。两个数据库都支持事务
使用具有正确transactionManager属性的Spring @Transactional注释,在每个数据库上单独处理事务没有任何问题。
但是我有很多方法同时操作neo4j db和postgres db上的数据。这样的操作应该是事务性的,所以我想“合并”那些单独的事务。我的意思是如果smth在一个数据库引擎上失败,那么另一个也应该回滚他自己的事务。
是否有任何图书馆或工具可以帮助我实现这一目标?或者我必须自己实施吗?
提前致谢!
答案 0 :(得分:1)
您可以使用ChainedTransactionManager
,如下所示。
<bean id="transactionManager" class="com.springsource.open.db.ChainedTransactionManager">
<property name="transactionManagers">
<list>
<!-- Postgresql Transaction Manager -->
<bean class="org.springframework.jdbc.datasource.DataSourceTransactionManager"/>
<!-- Neo4J Transaction Manager -->
<bean class="org.neo4j.ogm.session.transaction.TransactionManager"/>
</list>
</property>
</bean>