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

时间:2015-05-04 23:13:10

标签: mysql spring dao spring-jdbc

我目前正在开发一个Spring MVC项目,我需要多个数据库,每个人注册一个(我知道它会很重但数量有限)。 因此,在一个人登录后,他应该只能访问他的数据库,但是我如何使用Spring-JDBC呢? (我也使用Spring Security进行身份验证)以及如何在注册后创建数据库?使用JDBC模板还是别的什么?

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

1 个答案:

答案 0 :(得分:1)

Hibernate支持这种开箱即用的方法。它被称为多租户。在这里查看文档:

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

但就它而言,这并不能让你想到的地方。除了每个客户之外,您肯定需要另一个数据库模式,至少存储有关每个客户数据库连接的信息。

您可能希望此架构使用hibernate实体,您将在其中拥有另一个Session Factory,或者您可能只想通过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有一个实用程序类,只要您不希望结果设置回来,它就会为您执行此操作: org.springframework.test.jdbc.JdbcTestUtils

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

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