小编Car*_*ten的帖子

使用Hibernate 4.2和Spring 3.1.1设置MultiTenantConnectionProvider

我目前正在尝试使用单独的Schema aproach为多租户设置Hibernate.
在完成了大约2天的工作并浏览了几乎所有我可以通过Google找到的来源后,我开始变得非常沮丧.

Basicaly我试图遵循Hibernate devguide http://docs.jboss.org/hibernate/orm/4.1/devguide/en-US/html_single/#d5e4691中提供的指南
但不幸的是我无法找到ConnectionProviderUtils到构建ConnectionProvider.目前我想弄清楚2点:

  1. 为什么永远不会调用我的MSSQLMultiTenantConnectionProvider的configure(Properties props)方法.根据我从不同的其他ConnectionProvider实现的来源和描述中解释,我假设将调用此方法来初始化ConnectionProvider.

  2. 由于我无法使用configure(属性道具),我尝试了以某种方式获取应用程序Context和hibernate.cfg.xml中指定的hibernate属性和DataSource的其他方法.(就像将数据源直接注入ConnectionProvider一样)

任何可能的解决方法的指针(方法,类,教程)

以下是我的实现的相关部分:
Data Source和Hibernate.cfg.xml:

    <bean id="dataSource"   class="org.springframework.jdbc.datasource.DriverManagerDataSource">
        <property name="driverClassName" value="com.microsoft.sqlserver.jdbc.SQLServerDriver" />
        <property name="url" value="jdbc:sqlserver://<host>:<port>;databaseName=<DbName>;" />
        <property name="username" value=<username> />
        <property name="password" value=<password> />
   </bean>
   <bean id="sessionFactory" class="org.springframework.orm.hibernate4.LocalSessionFactoryBean">
        <!-- property name="dataSource" ref="dataSource" /-->
        <property name="annotatedClasses">
            <list>
                <value>c.h.utils.hibernate.User</value>
                <value>c.h.utils.hibernate.Role</value>
                <value>c.h.utils.hibernate.Tenant</value>
            </list>
        </property>
        <property name="hibernateProperties">
            <value>
                hibernate.dialect=org.hibernate.dialect.SQLServerDialect
                hibernate.show_sql=true
                hibernate.multiTenancy=SCHEMA
                hibernate.tenant_identifier_resolver=c.h.utils.hibernate.CurrentTenantIdentifierResolver
                hibernate.multi_tenant_connection_provider=c.h.utils.hibernate.MSSQLMultiTenantConnectionProviderImpl 
            </value>
        </property>
    </bean>
Run Code Online (Sandbox Code Playgroud)

MSSQLMultiTenantConnectionProviderImpl:

package c.hoell.utils.hibernate;

import java.sql.Connection;
import java.sql.SQLException;

import javax.sql.DataSource;

import org.hibernate.service.UnknownUnwrapTypeException;
import org.hibernate.service.jdbc.connections.spi.ConnectionProvider;
import org.hibernate.service.jdbc.connections.spi.MultiTenantConnectionProvider;
import org.springframework.beans.factory.annotation.Autowired;
import …
Run Code Online (Sandbox Code Playgroud)

orm spring hibernate multi-tenant

17
推荐指数
3
解决办法
2万
查看次数

标签 统计

hibernate ×1

multi-tenant ×1

orm ×1

spring ×1