繁体   English   中英

在 Java 中动态连接数据库(Spring Boot)

[英]Dynamically connecting to Database in Java(Spring Boot)

我想在每个 http 请求时连接到数据库(在每个请求中,我都会从用户那里获取数据库详细信息)。谁能建议如何使用 spring-boot-starter-jpa 来做到这一点。

我无法将属性文件用于数据库配置详细信息。 因为我将从 http 请求动态获取详细信息。

我使用的是 2.0.0.M3 spring boot 版本。

我建议您更好地使用本机 JDBC 代码来连接数据库并执行查询。 如果要使用 spring 数据 jpa,则必须在运行时为DataSourceEntityManagerFactoryJpaTransactionManager创建 bean。

如果数据库详细信息将出现在每个用户请求中,并且您希望在每个 http 请求上连接数据库,那么这不是可取的,因为在没有数据库实例化的情况下,在应用程序启动时甚至没有实体管理器工厂。 但是,在这种情况下,您必须手动管理所有这些内容。 您必须在每个请求上手动创建数据源、事务管理器、实体管理器等实例化和初始化,并将它们注册到 spring IOC 容器,在请求完成后,您必须从 Spring IOC 手动删除(取消注册)这些实例。 您也可以为此创建拦截器。 但是没有人应该手动执行这个过程,因为它太老练和更复杂,我们正在负担这个实例化以自己销毁 bean。 甚至 spring 也能很好地管理它,我们通过自己负责来制造复杂性。

我觉得直接连接用户的数据库可能不太合适。我建议做一个接口程序,把你需要的动态数据收集到一个数据库中。你不能在你的代码中改变连接参数的属性。

您需要使用@ConfigurationProperties注释在类中加载spring boot 的属性文件。

您还需要在此类中调用数据库配置 api。

相同的要求,我确信我连接的所有数据库都具有相同的结构

到现在有什么解决办法吗?

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM