每个应用程序的多个数据库

时间:2015-09-17 11:05:07

标签: java spring jboss

是否可以创建具有多个数据库的spring mvc应用程序? 我正在为学校创建一个学校管理网络应用程序。 为了简化数据库管理,我想为每个学校映射一个数据库,但是Web应用程序保持相同,只是更改是数据库的配置。 我在我的web应用程序中使用jobss作为服务器和JNDI数据源配置。并且所有应用程序都托管在同一个实时服务器上。 是否可以这样做,最好的方法是什么?

spring数据源配置:

<!-- JNDI setup -->
<bean id="dataSource" class="org.springframework.jndi.JndiObjectFactoryBean">
    <property name="jndiName">
        <value>java:jboss/datasources/ResponseDS</value>
    </property>
</bean>

jboss standalone.xml配置:

<datasource jndi-name="java:jboss/datasources/ResponseDS" pool-name="ResponseDSPool">
    <connection-url>jdbc:mysql://localhost:3306/response</connection-url>
    <driver>com.mysql</driver>
    <transaction-isolation>TRANSACTION_READ_COMMITTED</transaction-isolation>
    <pool>
        <min-pool-size>10</min-pool-size>
        <max-pool-size>100</max-pool-size>
        <prefill>true</prefill>
    </pool>
    <security>
        <user-name>root</user-name>
        <password>password</password>
    </security>
    <statement>
        <prepared-statement-cache-size>32</prepared-statement-cache-size>
        <share-prepared-statements>true</share-prepared-statements>
    </statement>
</datasource>       

2 个答案:

答案 0 :(得分:0)

我没有看到multiple datasources in spring和jboss配置有任何问题。但是在代码中进行维护会变得很麻烦,所以我宁愿将DAO层非常清楚地分成单独的包或模块,这些包或模块可以单独重复使用,可以单独测试,并且两个模块都不应该知道每个其他数据库相关的代码。这样就可以清楚哪个模块正在处理哪个数据库及其事务,以便在出现任何问题时可以轻松调试。

答案 1 :(得分:0)

如果我正确理解了这个问题,应用程序代码,模块中的所有其他内容将保持不变,但数据将来自不同的数据库。

您可以配置多个数据源,但是您需要在应用程序中使用逻辑来在运行时选择数据源取决于某些条件,例如登录用户所属的学校。

但是,每次添加新学校时,都需要创建新的数据源并更改应用程序中的逻辑,这不是很好的做法,代码很快就会失控。