Ver*_*ant 8 spring hibernate sessionfactory
我有一个要求,我需要在同一个实例中支持多个数据库,以支持多租户.每个DB都具有相同的架构.用户通过从列表中选择登录到特定数据库,并且所有后续调用将转到该数据库,直到他们注销.
我想基于客户端提供的参数在单个HibernateDaoTemplate内热交换会话工厂.
我可以在热交换数据源(以及与之相关的所有事务问题)上找到很多东西,但我想热交换会话工厂 - 保留每个的所有缓存.
最简单的方法是什么?为DaoTemplate配置HotSwappableTarget?谁能指点我如何做到这一点?
如果所有数据库都是相同的,那么我可以建议使用单个 SessionFactory 并为实际上“租户感知”的数据源和缓存提供您自己的实现。(实现这些相当简单:只需维护租户 id -> 真实缓存/真实数据源的映射,然后将所有调用委托给适当的调用)。配置单个 SessionFactory 以使用租户感知的缓存和数据源。ThreadLocal 可用于使当前请求的租户 ID 可供任何需要了解它的代码使用。
我之前曾成功地使用过这种方法来支持多租户。
| 归档时间: |
|
| 查看次数: |
12845 次 |
| 最近记录: |