MultiTenantConnectionProvider

MultiTenantConnectionProvider

我正在尝试对多个数据库进行多租户。从这个chapter中,我获得了MultiTenantConnectionProviderImpl。

我这里有问题。 Eclipse找不到类ConnectionProviderUtils。我正在使用Maven与依赖项:

    <dependency>
        <groupId>org.hibernate</groupId>
        <artifactId>hibernate-core</artifactId>
        <version>4.1.4.Final</version>
    </dependency>

最佳答案

我不想让你失望,但不久前我遇到了同样的问题。关键是ConnectionProviderUtil在文档中相当容易引起误解。哪有这回事。 ConnectionProviderUtil是您必须自己实现的东西。我通过在MultiTenantConnectionProvider中构造自己的DataSource(一个c3p0池化的)并从那里分发连接来实现此目的。

因此,您必须从头开始实施它。供参考,这是我寻求解决方案的方法。 Setting up a MultiTenantConnectionProvider using Hibernate 4.2 and Spring 3.1.1

对于多数据库方法,您只需将不同的DataSources自动连接到MultiTenantConnectionProvider并根据TenantIdentifier进行切换。请参阅此答案以获取更多详细信息:https://stackoverflow.com/a/16769595/2319179

编辑:
如果您使用Spring,则可以在appcontext中设置数据源,如下所示:

<bean id="dataSource" class="org.springframework.jdbc.datasource.DriverManagerDataSource">
            <property name="driverClassName" value="<jdbcdriver>" />
            <property name="url" value="jdbc:SQLServer://<host>:<port>;databaseName=<dbname>" />
            <property name="username" value="<user>" />
            <property name="password" value="<pw>" />
       </bean>


如果您需要从Java构建它,可以这样做:

        cpds = new DriverManagerDataSource();
cpds.setDriverClass(<jdbc.driver>);
cpds.setJdbcUrl(<jdbc.url>);
cpds.setUser("<user>");
cpds.setPassword("<pw>"));


快速的googlesearch应该会找到合适的驱动程序。

09-05 02:40