【发布时间】:2017-03-16 17:08:25
【问题描述】:
我的应用程序要求是动态创建数据库连接。数据库连接详细信息在编译时未知,仅在运行时提供给应用程序。处理一个请求只需要一个连接,连接范围仅取决于请求执行周期。同一用户可能会或可能不会发布包含数据库连接详细信息的新请求。我们可以有数百个这样的用户,因此如果假设他们都同时发布请求,我的应用程序将不得不创建数百个这样的数据库连接。
基于这种情况,我有以下问题/需要澄清-
- 连接池在这里不起作用,因为数据库连接是 动态的?
- 在这种情况下创建数据库连接的最佳方法是什么?这里最好使用纯 JDBC 连接?
- 为每个请求创建休眠会话工厂,仅仅创建一个连接会导致开销吗?或者我们可以这样做吗?
- 还有哪些其他可能的好方法来处理这种情况?
编辑: 我的应用程序是一个更大的 Web 应用程序的一个组件。这个更大的 Web 应用程序在云上拥有自己的存储空间。任何用户都可以在此存储上创建沙箱。因此,在请求数据加载时,用户必须传递凭据。
我是休眠和春季的新手。请帮助我为此确定最佳架构。
【问题讨论】:
-
您在哪里配置数据源详细信息?属性文件? xml文件?它们在运行时来自单独的服务吗?
-
主机名、端口号等数据库详细信息存储在后端数据库中。但是,用户名、密码等用户架构详细信息会随用户请求一起传递。
-
所以您要为每个用户创建一个架构?
-
如果只有在运行时才知道数据库连接,您为什么认为需要 Hibernate?运行用户提供的 SQL 查询?或者您以某种方式事先知道实体,即使您不知道数据库将在哪里?我不明白。
-
这并不是不可能的。但是我想知道这背后的想法是什么,因为它毕竟可能是一个非常可怕的想法。这里的很多人(他们经常会帮助告知他们对某事新)花时间担心他们是否可以而不是是否应该。
标签: java hibernate jdbc spring-jdbc