A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© das 初级黑马   /  2016-3-12 15:44  /  897 人查看  /  0 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

对于一个应用连接多个数据库的问题,如果是因为数据量大而分库形成的多个数据库,可以在数据库的层面使用分布式中间件,比如:cobar或amoba都可以。
如果是分表形成的多库,则建议使用原生的jdbc或Spring配置多个数据源,根据业务逻辑,通过代码动态查询。
eg:
   使用Spring配置多个数据源
<!--定义多个数据库连接源,每个数据源的数据库名称、用户名、密码都一致,仅仅是IP地址的不同,即:url是动态配置的--><!--定义数据源 dataSource1,使用DBCP连接池 --><bean id="dataSource1" class="org.apache.commons.dbcp.BasicDataSource"   destroy-method="close">   <property name="driverClassName" value="${jdbc.driverClassName}" />   <property name="url" value="${jdbc.url1}" />   <property name="username" value="${jdbc.username}" />   <property name="password" value="${jdbc.password}" />   <property name="timeBetweenEvictionRunsMillis">      <value>3600000</value><!--1 hours -->   </property>   <property name="minEvictableIdleTimeMillis">      <value>28800000</value><!--8 hours -->   </property></bean>   <!--定义数据源 dataSource2,使用DBCP连接池 -->   <bean id="dataSource2" class="org.apache.commons.dbcp.BasicDataSource"         destroy-method="close">       <property name="driverClassName" value="${jdbc.driverClassName}" />       <property name="url" value="${jdbc.url2}" />       <property name="username" value="${jdbc.username}" />       <property name="password" value="${jdbc.password}" />       <property name="timeBetweenEvictionRunsMillis">           <value>3600000</value><!--1 hours -->       </property>       <property name="minEvictableIdleTimeMillis">           <value>28800000</value><!--8 hours -->       </property>   </bean>   <!--为每个数据源配置一个SessionFactory,与上面定义的数据源dataSource一致-->  <!-- Hibernate4中使用以下配置方式 -->  <bean id="sessionFactory1" class="org.springframework.orm.hibernate4.LocalSessionFactoryBean">       <property name="dataSource" ref="dataSource1" />      <!--  采用注解形式配置对象关系映射信息 -->         <property name="packagesToScan">              <list>                   <value>com.jay.*</value>              </list>        </property>       <property name="hibernateProperties">             <props>                 <prop key="hibernate.dialect">org.hibernate.dialect.PostgreSQL9Dialect</prop>               <prop key="hibernate.show_sql">true</prop>                 <prop key="hibernate.format_sql">true</prop>                 <prop key="hibernate.hbm2ddl.auto">update</prop>                 <prop key="hibernate.current_session_context_class">org.springframework.orm.hibernate4.SpringSessionContext</prop>                 </props>         </property>     </bean>  



评分

参与人数 1黑马币 +4 收起 理由
fanyun2009 + 4 赞一个!

查看全部评分

0 个回复

您需要登录后才可以回帖 登录 | 加入黑马