gpt4 book ai didi

spring - JdbcTemplate 中的 Multi-Tenancy

转载 作者:行者123 更新时间:2023-12-05 06:58:21 25 4
gpt4 key购买 nike

我在我的项目中使用 JdbcTemplate,我们需要在我们的项目中实现 Multi-Tenancy 。

现在我们只是创建一个 DataSource bean,然后将该数据源注入(inject)到 jdbtemplate 中

@Bean
public DataSource dataSource() {
final JndiDataSourceLookup dsLookup = new JndiDataSourceLookup();
dsLookup.setResourceRef(true);
return dsLookup.getDataSource("path");

}

@Bean
public NamedParameterJdbcTemplate jdbcTemplate(DataSource dataSource) {
JdbcTemplate template = new JdbcTemplate(dataSource);
return new NamedParameterJdbcTemplate(template);
}

但是在拥有 Multi-Tenancy 之后,我们需要根据请求中的参数连接到不同的模式。

谁能告诉我如何使用 jdbctemplate 做到这一点?

最佳答案

您可以像这样创建一个 Bean,它将根据数据源分配不同的模式:

    @Bean
public LocalContainerEntityManagerFactoryBean entityManagerFactory() {

Map<String, Object> jpaPropertiesMap = createJpaPropertiesMap();

LocalContainerEntityManagerFactoryBean factoryBean = new LocalContainerEntityManagerFactoryBean();

factoryBean.setDataSource(dataSource);
factoryBean.setPackagesToScan("com.example.multi*");
factoryBean.setJpaVendorAdapter(jpaVendorAdapter());
factoryBean.setJpaPropertyMap(jpaPropertiesMap);

return factoryBean;
}

private Map<String, Object> createJpaPropertiesMap() {

Map<String, Object> jpaPropertiesMap = new HashMap<>(jpaProperties.getProperties());


jpaPropertiesMap.put(Environment.MULTI_TENANT, MultiTenancyStrategy.SCHEMA);
// jpaPropertiesMap.put(Environment.MULTI_TENANT, MultiTenancyStrategy.DATABASE);

jpaPropertiesMap.put(Environment.MULTI_TENANT_CONNECTION_PROVIDER, tenantConnectionProvider);
jpaPropertiesMap.put(Environment.MULTI_TENANT_IDENTIFIER_RESOLVER, currentTenantIdentifier);


jpaPropertiesMap.put(Environment.FORMAT_SQL, true);
jpaPropertiesMap.put(Environment.SHOW_SQL, true);

return jpaPropertiesMap;
}

如果您想为新租户创建数据库,只需取消注释 bean 中的行

关于spring - JdbcTemplate 中的 Multi-Tenancy ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/64645195/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com