如何使用 Spring 管理具有不同 jdbc(或休眠?)的多个“运行时注意到”数据库连接?

Posted

技术标签:

【中文标题】如何使用 Spring 管理具有不同 jdbc(或休眠?)的多个“运行时注意到”数据库连接?【英文标题】:How to use Spring to mange mulitple "runtime noticed" database connection with different jdbc(or hibernate?)? 【发布时间】:2013-01-15 01:57:30 【问题描述】:

我有一个 Web 应用程序可以访问数据库,它的连接信息(连接字符串、用户名、密码)由用户在运行时输入。

因此,我无法在部署时注意到任何信息。

系统应该支持多种不同jdbc的数据库

我如何使用 spring/hibernate 来管理这种情况(我怀疑 hibernate 可以处理这种情况,因为数据结构在运行时是已知的)??

【问题讨论】:

您打算只使用用户输入的数据源一次还是将其存储起来以备将来使用? 为了将来的使用,实际上我正在使用该值来从数据库验证表单 【参考方案1】:

您可以使用类似于here 描述的方法

基本上只是继承 AbstractRoutingDataSource 并覆盖方法 determineTargetDataSource(如果您需要从应用程序中创建数据源)或 determineCurrentLookupKey(如果您的数据源将已在应用服务器中创建)。

在defineTargetDataSource 方法中,您可以返回您需要的任何数据源,或者在需要时创建一个新数据源。

【讨论】:

以上是关于如何使用 Spring 管理具有不同 jdbc(或休眠?)的多个“运行时注意到”数据库连接?的主要内容,如果未能解决你的问题,请参考以下文章

如何在具有 JDBC 安全性的 Spring Boot 中使用 Flyway?

Spring JDBC为具有值的列返回空值

如何在spring boot jdbc中从具有批量大小的多个表中执行批量删除

具有不同键的 Spring Boot 应用程序属性[重复]

如何使用 Java 和 XML 配置在 Spring Security 中配置 jdbc 身份验证管理器?

Spring应用程序 - jdbc commit