您好, 欢迎来到 !    登录 | 注册 | | 设为首页 | 收藏本站

具有多租户休眠的Spring-Data JPA

具有多租户休眠的Spring-Data JPA

用途CurrentTenantIdentifierResolver

<bean id="sessionFactory" class="org.springframework.orm.hibernate4.LocalSessionfactorybean">
    <property name="hibernateProperties">
        <map>
            <entry key="hibernate.dialect" value="org.hibernate.dialect.sqlServer2012Dialect">
            <entry key="hibernate.format_sql" value="true">
            <entry key="hibernate.multi_tenant_connection_provider" value="com.company.hibernate.MultiTenantConnectionProviderImpl">
            <entry key="hibernate.multiTenancy" value="DATABASE">
            <!-- tenant resolver as spring bean -->
            <entry key="hibernate.tenant_identifier_resolver" value-ref="currentTenantIdentifierResolver"/>
        </map>
    </property>
</bean>

<bean id="currentTenantIdentifierResolver"
    class="com.xxx.CurrentTenantResolver">
</bean>

简单的租户标识符解析器将如下所示:

public class CurrentTenantResolver implements CurrentTenantIdentifierResolver {

    public String resolveCurrentTenantIdentifier() {
        // retrieve tenant from logged in user
        User usr = (User) SecurityContextHolder.getContext().getAuthentication().getPrincipal() ;       
        return usr.getTenantName();

    }

    public boolean validateExistingCurrentSessions() {
        return true;
    }

}

请记住,上面的类是Spring bean,因此您可以像常规Spring bean一样自动连接任何spring bean(service / dao)。

每次Spring Need Session Hibernate都会从该bean中检索租户标识符。

Java 2022/1/1 18:15:44 有575人围观

撰写回答


你尚未登录,登录后可以

和开发者交流问题的细节

关注并接收问题和回答的更新提醒

参与内容的编辑和改进,让解决方法与时俱进

请先登录

推荐问题


联系我
置顶