黑马程序员技术交流社区

标题: java连接多个数据库 [打印本页]

作者: das    时间: 2016-3-12 15:44
标题: java连接多个数据库
对于一个应用连接多个数据库的问题,如果是因为数据量大而分库形成的多个数据库,可以在数据库的层面使用分布式中间件,比如: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>  








欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2