可以在运行时在多租户过程中更改用户名吗?

时间:2019-06-13 17:17:18

标签: java spring hibernate spring-boot spring-data-jpa

当前,我的数据库使用的是每个租户架构的架构。每个用户都将从主模式(我称为APP模式)开始。该模式中的用户表具有一个discriminator列,其租户值将确定该用户所属的模式。

当前,我正在准备Web应用程序的多租户部分。我已经阅读了几篇有关此问题的文章,但是其中很少涉及我们的多租户细节。

简而言之,一旦登录到应用程序,我只需要在运行时将spring.datasource.username的值从应用程序更改为fnb,服务等。(指租户名称),其余时间设置保持不变。

我计划的代码结构与这两篇博文中记录的结构完全相同:

  1. 第1部分-here
  2. 第2部分-here

我的application.properties文件目前如下所示:

spring.datasource.type=com.zaxxer.hikari.HikariDataSource
spring.datasource.dataSourceClassName=com.microsoft.sqlserver.jdbc.SQLServerDataSource
spring.datasource.url=jdbc:sqlserver://ilabsadbsvr1d.database.windows.net:1433;databaseName=mydatabase
spring.datasource.username=app
spring.datasource.password=J@c0bB1scu1t

spring.jpa.hibernate.connection.provider_class=org.hibernate.hikaricp.internal.HikariCPConnectionProvider

# Hikari will use the above plus the following to setup connection pooling
spring.datasource.hikari.minimumIdle=10
spring.datasource.hikari.maximumPoolSize=30
spring.datasource.hikari.connectionTimeout=30000
spring.datasource.hikari.idleTimeout=600000
spring.datasource.hikari.maxLifetime=900000
spring.datasource.hikari.autoCommit=true

# JPA specific configs
spring.jpa.properties.hibernate.show_sql=true
spring.jpa.properties.hibernate.format_sql=true
spring.jpa.properties.hibernate.use_sql=true
spring.jpa.properties.hibernate.id.new_generator_mappings=false
spring.jpa.properties.hibernate.search.autoregister_listeners=false
spring.jpa.properties.hibernate.bytecode.use_reflection_optimizer=false

我知道,重复第一组设置几次以容纳多个模式不是一件好事,特别是如果将来有大约五到十个模式时。

在运行时更改用户名是否真的更简单(如果没有)或更好的方法呢?

0 个答案:

没有答案