【发布时间】:2019-01-24 15:03:19
【问题描述】:
我在生产服务器上使用 MySQL,每个客户都有自己的数据库和自己的数据库用户来连接到他的数据库。每个数据库都具有完全相同的结构。在服务器的生命周期中添加客户(因此也包括数据库)。
目前我与java.sql.DriverManager 类建立了一个 MySQL 数据库连接,它工作得很好。数据库 url、用户、密码和驱动程序名称存储在几个属性文件中。 servlet 从当前客户读取属性文件并创建java.sql.Connection 和java.sql.DriverManager。
我真的很想使用 JPA,但据我所知,JPA 只能通过在 web 容器(在我的例子中是 Tomcat)的配置中明确指定数据库来使用。但这意味着,当新客户在我的平台上注册时,我必须将新数据库添加到 webcontainer-configuration 并重新启动 webcontainer,这听起来不是一个好主意。
有没有一种方法可以使用 JPA 并且在 Web 容器的生命周期内仍然可以灵活地添加新数据库?
【问题讨论】:
-
与您的问题无关,但您不应在 Web 应用程序中使用
DriverManager。请改用数据源(带有连接池)。 -
但据我了解,当我使用 JNDI 时,我遇到了与上述相同的问题。我必须在 webcontainer 的配置中明确指定数据库。
-
Hibernate 允许您在代码中对其进行配置,例如 spring-jpa 也是如此。
标签: jpa jakarta-ee jdbc jndi