【问题标题】:multiple database for each app每个应用程序的多个数据库
【发布时间】:2015-12-14 05:36:15
【问题描述】:

是否可以创建具有多个数据库的 spring mvc 应用程序? 我正在为学校创建一个学校管理网络应用程序。 为了简化数据库管理,我想为每个学校映射一个数据库,但 Web 应用程序保持不变,唯一的变化是数据库的配置。 我在我的 Web 应用程序中使用作业作为我的服务器和 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>       

【问题讨论】:

    标签: java spring jboss


    【解决方案1】:

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

    【讨论】:

      【解决方案2】:

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

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

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

      【讨论】:

        猜你喜欢
        • 2019-12-02
        • 2019-05-23
        • 2014-11-01
        • 1970-01-01
        • 1970-01-01
        • 2012-04-08
        • 1970-01-01
        • 1970-01-01
        • 2020-01-18
        相关资源
        最近更新 更多