【问题标题】:How to open connection at run time in spring boot jpa?如何在运行时在 Spring Boot jpa 中打开连接?
【发布时间】:2020-05-20 05:35:25
【问题描述】:

我在运行时在 Spring Boot JPA 中打开与数据库的连接时遇到了阻塞。 例子: 我使用 SQL Server。我的数据库每天使用数据库名称模式生成:DBDaily DBDaily01012020 DBDaily01022020 DBDaily01032020 DBDaily01042020 ... 我编写了一个 Spring Boot 控制台应用程序,根据用户输入的日期从这些数据库中导出数据。您能否帮助打开与这些数据库的连接以获取数据?

【问题讨论】:

  • 每天都有一个数据库似乎是一个很大的设计缺陷。具有日期列的对象的单个数据库似乎更合适。
  • 没错@Lamu。这是旧系统,我无法更改它
  • 系统陈旧并不是不改变它的借口。通常这更多是一个理由。

标签: sql-server spring spring-boot jpa spring-data-jpa


【解决方案1】:

在您的应用程序中以编程方式创建一个 DataSource bean。在那里,您可以通过按照特定格式附加数据库名称来生成 url。实现方法getMyDbName() 以根据命名约定返回数据库名称。此外,您需要添加一个逻辑来按照计划每天刷新此配置。或者配置基于会话的数据源。参考Spring Boot with session-based data source

@Configuration
public class DataSourceConfig {

    @Bean
    public DataSource getDataSource() {
        DataSourceBuilder dataSourceBuilder = DataSourceBuilder.create();
        dataSourceBuilder.driverClassName("com.microsoft.sqlserver.jdbc.SQLServerDriver");
        dataSourceBuilder.url("jdbc:sqlserver://myserver.com:1433;DatabaseName=" + getMyDbName());
        dataSourceBuilder.username("AAAA");
        dataSourceBuilder.password("AAAA");
        return dataSourceBuilder.build();
    }
}

【讨论】:

  • 谢谢@Satish,我会尝试应用你的解决方案。
猜你喜欢
  • 2019-03-16
  • 2015-07-25
  • 2021-10-03
  • 1970-01-01
  • 1970-01-01
  • 2016-11-01
  • 2017-02-15
  • 2016-12-17
  • 1970-01-01
相关资源
最近更新 更多