当前,我的数据库使用的是每个租户架构的架构。每个用户都将从主模式(我称为APP模式)开始。该模式中的用户表具有一个discriminator列,其租户值将确定该用户所属的模式。
当前,我正在准备Web应用程序的多租户部分。我已经阅读了几篇有关此问题的文章,但是其中很少涉及我们的多租户细节。
简而言之,一旦登录到应用程序,我只需要在运行时将spring.datasource.username的值从应用程序更改为fnb,服务等。(指租户名称),其余时间设置保持不变。
我计划的代码结构与这两篇博文中记录的结构完全相同:
我的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
我知道,重复第一组设置几次以容纳多个模式不是一件好事,特别是如果将来有大约五到十个模式时。
在运行时更改用户名是否真的更简单(如果没有)或更好的方法呢?