java - 多个 session 工厂,一个连接?

标签 java hibernate spring sessionfactory

为了避免 XA 开销,我给项目 A 中的一些表名添加了前缀,并将其推出到与项目 B 相同的 mysql 数据库中,这样我就可以使用相同的连接 - 并希望获得完整的原子性等。

项目 A 和 B 的 session 工厂配置非常不同。我为项目 B 配置了一个 HibernateTransactionManager,而 A 只是使用 TransactionSynchronizationManager.hasResource(sessionFactoryA) 用于加入交易的 OSiV 样式代码。

这在概念上可行吗?我只是在A中尝试了一个断点,然后等待,然后继续,超时导致B回滚,但A仍然提交!!?

什么给了?感谢您的帮助。

最佳答案

即使两组实体驻留在同一个数据库中,您仍然使用两个不同的事务管理器配置 Spring。结果,您最终会得到重叠但完全独立的事务,每个事务使用不同的数据库连接。

为了使事务正常工作,您需要使用一个事务管理器,并通过它发送所有事务操作。

关于java - 多个 session 工厂,一个连接?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2096475/

相关文章:

java - Spring Security 休息登录

java - 如何使用数组中 png 的名称以两种不同的方式对数组进行排序

java - Spring Boot 中的 RequestMapping 不起作用

java - 是否可以通过 .THIS 关键字指向匿名类?

Java:总是保证调用构造函数之外的成员初始化吗?

java - 使用JPA和Hibernate时JOIN和JOIN FETCH有什么区别

hibernate - weblogic.management.ManagementException : There is the same running task.

mysql - 如何处理 org.hibernate.exception.ConstraintViolationException,我使用 try catch 但它不起作用

java - Eclipse Web 应用程序启动时出现严重错误

java - 如何在 spring-data-rest 中将 Page<ObjectEntity> 映射到 Page<ObjectDTO>