【发布时间】:2019-01-24 16:02:03
【问题描述】:
我们使用 Spring Boot 和 Spring Data JPA 以及 Transactional 注释来管理事务。
但是,我们有一个多租户应用程序,对于非常大的客户,我们需要将它们放在单独的专用数据库中。
有没有什么方法可以拦截 TransactionalAnnotation 使用的 TransactionManager 并根据请求动态覆盖它(取决于哪个租户正在更新)?
【问题讨论】:
-
这可能对tech.asimio.net/2017/01/17/…有帮助
-
您不必(也不应该)担心使用 Spring Transactions 开发的多租户应用程序中的
TransactionManager。相反,您应该确保对于每个操作,JPAEntityManager可以访问与该操作关联的租户的正确DataSource。当使用 Hibernate 作为 JPA 提供者时,如果可以正确识别租户,则有几种策略可以为操作找到正确的DataSource。有关示例,请参阅 this post。
标签: java spring spring-data-jpa spring-data