Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/spring/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
多租户应用程序的Spring和Hibernate初始化问题_Spring_Hibernate_Multi Tenant_Spring Orm - Fatal编程技术网

多租户应用程序的Spring和Hibernate初始化问题

多租户应用程序的Spring和Hibernate初始化问题,spring,hibernate,multi-tenant,spring-orm,Spring,Hibernate,Multi Tenant,Spring Orm,我们使用Spring3.2.0和Hibernate4.1.12开发了一个web应用程序 该应用程序支持基于数据源的多租户,这意味着每个应用程序租户使用一个专用的数据源 数据源JNDI名称在运行时根据请求应用程序的用户的名称进行解析。用户名告诉必须使用哪个租户。解决方案是通过实现hibernate的org.hibernate.service.jdbc.connections.spi.ConnectionProvider接口完成的 Spring配置摘录为: <bean id="tenantHi

我们使用Spring3.2.0和Hibernate4.1.12开发了一个web应用程序

该应用程序支持基于数据源的多租户,这意味着每个应用程序租户使用一个专用的数据源

数据源JNDI名称在运行时根据请求应用程序的用户的名称进行解析。用户名告诉必须使用哪个租户。解决方案是通过实现hibernate的org.hibernate.service.jdbc.connections.spi.ConnectionProvider接口完成的

Spring配置摘录为:

<bean id="tenantHibernateSessionFactory"
    class="org.springframework.orm.hibernate4.LocalSessionFactoryBean">

    <property name="packagesToScan">
        <list>
            <value>com.foo.bar.model</value>
        </list>
    </property>

    <property name="hibernateProperties">
        <props>
            <prop key="hibernate.show_sql">false</prop>
            <prop key="hibernate.dialect">org.hibernate.dialect.DB2Dialect</prop>
            <prop key="hibernate.format_sql">false</prop>
            <prop key="hibernate.connection.autocommit">true</prop>
            <prop key="hibernate.connection.provider_class">com.foo.bar.dao.hibernate.CustomConnectionProvider</prop>
        </props>
    </property>
</bean>
我查看了Hibernate源代码,发现了一个可以在部署期间禁用数据库访问的属性:

<prop key="hibernate.temp.use_jdbc_metadata_defaults">false</prop>
但它在这里似乎不起作用

更新1:此Hibernate属性在应用程序部署期间禁用数据库访问。但根据hibernate 4.1.12中的org.hibernate.engine.jdbc.internal.jdbcservicesiml,该属性是一个未记录的临时值

是否有推荐的方法在部署期间禁用数据库访问以正确支持多租户


感谢您抽出时间

Hibernate访问数据库以检查实体映射是否有效,因为它需要连接。从hibernate的角度来看,访问数据库是有意义的。
<prop key="hibernate.temp.use_jdbc_metadata_defaults">false</prop>