我正在尝试对多个数据库进行多租户。从这个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应该会找到合适的驱动程序。