使用 Spring JDBC 创建多个数据库或模式

Creating multiple databases or schemas with Spring JDBC

我目前正在做一个 Spring MVC 项目,我需要多个数据库,每个注册的人一个(我知道它会很重,但数量有限)。 所以在一个人登录后,他应该只能访问他的数据库,但是我如何使用 Spring-JDBC 来做到这一点? (我还使用 Spring 安全性进行身份验证)以及如何在注册后创建数据库?使用 JDBC 模板或其他方式?

PS :我正在使用 Spring JPA Hibernate 并被迫更改为 Spring-JDBC 因为我找不到这样做的方法那样。

Hibernate 开箱即用地支持这种方法。这称为多租户。在此处查看文档:

http://docs.jboss.org/hibernate/orm/4.1/devguide/en-US/html/ch16.html

但就其本身而言,这不会让您到达您想去的地方。除了每个客户数据库架构之外,您肯定还需要另一个数据库架构,以至少存储有关每个客户数据库连接的信息。

您可能希望此架构使用休眠实体,其中您将拥有另一个会话工厂,或者您可能只想通过 JDBC 模板调用它。

无论哪种方式,在 sql 中创建数据库模式都是几条语句的问题。您只需要确保您登录的凭据具有适当的权限在 postgres 中是这样的,我确定它在 mysql:

中类似
CREATE USER circl WITH PASSWORD 'circl';
CREATE DATABASE circl;
GRANT ALL PRIVILEGES ON DATABASE circl_test to circl;

您可以在 spring jdbc 模板中 运行 看起来像这样的脚本。 Spring 有一个实用程序 class,只要您不希望结果倒退,它就会为您执行此操作:org.springframework.test.jdbc.JdbcTestUtils.

或者您甚至可以按照此处的说明通过 JPA 完成此操作:

How can I execute a native SQL script in JPA/Hibernate?