本篇文章我们继续讨论neo4j与mysql多数据源时,批量事务的提交。就是说我一个提交结果里既有mysql更新,又有neo4j更新,这个时候的事务该怎么办呢?有人会说加两个事务不就行了,答案是当然不行的,因为@Transactional注解不支持多个事务管理器,默认使用transactionManager,需要实现@Transactional管理mysql事务。我们要做的就是把这两个事务合并成一个事务提交就OK了。
那我们先自定义一个注解,表示这两个事务的合集
@Target({ElementType.METHOD, ElementType.TYPE})
@Retention(RetentionPolicy.RUNTIME)
public @interface MultiTransaction {
//这里可以自定义参数
}
然后我们在配置文件里加上如下代码
@Aspect
@Configuration
@EnableTransactionManagement
@Slf4j
public class Neo4jConfig {
/\*\*
\* 定义neo4j事务
\*
\* @param sessionFactory
\* @return
\*/
@Bean("neo4jTransactionManager")
public Neo4jTransactionManager neo4jTransactionManager(SessionFactory sessionFactory) {
return new Neo4jTransactionManager(sessionFactory);
}
/\*\*
\* 定义mysql 事务
\*
\* @param em