zoukankan      html  css  js  c++  java
  • Spring+Hibernate配置多数据源

    配置说明

             在实际应用中,经常会用到读写分离,这里就这种情况进行Spring+Hibernate的多数据源配置。此处的配置只是让读的方法操作一个数据库,写的方法操作另外一个数据库。

             注:我这里的配置JDBC连接是放在properties文件中的,当然你也可以直接写在ApplicationCpntext.xml文件中或其他的配置方式。

    配置步骤

    1、配置多数据库

    在jdbc.Properties中,配置两个数据库的连接。在此处的例子如下(我这里都是使用的MySql,如果要使用其他的请更换驱动):

     

    [java] view plaincopy
     
    1. ## MySQL local  
    2. jdbc.driverClassName=com.mysql.jdbc.Driver  
    3. jdbc.url= jdbc:mysql://localhost:3306/数据库名?createDatabaseIfNotExist=true&useUnicode=true&characterEncoding=utf-8&zeroDateTimeBehavior=convertToNull  
    4. jdbc.username=root  
    5. jdbc.password=root  
    6.    
    7. ## MySql Server  
    8. jdbc_t.driverClassName=com.mysql.jdbc.Driver  
    9. jdbc_t.url= jdbc:mysql://服务器Ip:3306/数据库名(可以和上面不一样的)?createDatabaseIfNotExist=true&useUnicode=true&characterEncoding=utf-8&zeroDateTimeBehavior=convertToNull  
    10. jdbc_t.username=root  
    11. jdbc_t.password= root  

    注:jdbc.driverClassName和jdbc_t.driverClassName都可以使用jdbc.driverClassName的,如果使用一个则在后面的ApplicationContext.xml中配置一样的就可以了,这里为了方便说明,分开写。同理,如果用户名和密码都一样,也可以只用一个配置就可以了。

    2、配置DataSource

    这里使用的是DBCP连接池。

     

    [xhtml] view plaincopy
     
    1. <!-- 使用DBCP数据库连接池进行数据源的配置 -->  
    2.     <bean id="dataSource" class="org.apache.commons.dbcp.BasicDataSource" destroy-method="close">  
    3.         <property name="driverClassName" value="${jdbc.driverClassName}"/>  
    4.         <property name="url" value="${jdbc.url}"/>  
    5.         <property name="username" value="${jdbc.username}"/>  
    6.         <property name="password" value="${jdbc.password}"/>  
    7.         <property name="maxActive" value="100"/>  
    8.         <property name="maxWait" value="1000"/>  
    9.         <property name="poolPreparedStatements" value="true"/>  
    10.         <property name="defaultAutoCommit" value="true"/>  
    11.         <property name="removeAbandoned" value="true"/>  
    12.         <property name="logAbandoned" value="true"/>  
    13.         <property name="minEvictableIdleTimeMillis" value="10"/>  
    14.         <property name="removeAbandonedTimeout" value="5"/>  
    15.     </bean>  
    16.     <bean id="dataSource_t" class="org.apache.commons.dbcp.BasicDataSource" destroy-method="close">  
    17.         <property name="driverClassName" value="${jdbc_t.driverClassName}"/>  
    18.         <property name="url" value="${jdbc_t.url}"/>  
    19.         <property name="username" value="${jdbc_t.username}"/>  
    20.         <property name="password" value="${jdbc_t.password}"/>  
    21.         <property name="maxActive" value="100"/>  
    22.         <property name="maxWait" value="1000"/>  
    23.         <property name="poolPreparedStatements" value="true"/>  
    24.         <property name="defaultAutoCommit" value="true"/>  
    25.         <property name="removeAbandoned" value="true"/>  
    26.         <property name="logAbandoned" value="true"/>  
    27.         <property name="minEvictableIdleTimeMillis" value="10"/>  
    28.         <property name="removeAbandonedTimeout" value="5"/>  
    29. </bean>  

    注:id不能重复,所以后面的使用了dataSource_t和dataSource以区别,这样才能区分使用的是那一个数据库。如果上面的driverClassName配置一样,你可以不用配置jdbc_t.driverClassName,都用jdbc.driverClassName即可。

    3、配置sessionFactory

    请注意标红加粗的地方:

     

    [xhtml] view plaincopy
     
    1. <bean id="sessionFactory" class="org.springframework.orm.hibernate3.annotation.AnnotationSessionFactoryBean">  
    2.         <property name="dataSource" ref="dataSource"/>  
    3.         <property name="configLocations">  
    4.         <list>  
    5.              <value>classpath:hibernate.cfg.xml</value>  
    6.         </list>  
    7.         </property>  
    8.    
    9. <bean id="sessionFactory_t" class="org.springframework.orm.hibernate3.annotation.AnnotationSessionFactoryBean">  
    10.         <property name="dataSource" ref="dataSource_t"/>  
    11.         <property name="configLocations">  
    12.         <list>  
    13.              <value>classpath: hibernate_t.cfg.xml</value>  
    14.         </list>  
    15.         </property>  

    注:hibernate.cfg.xml和hibernate_t.cfg.xml可以根据实际情况看看是否应该区别开。也可以共用一份。

    4、配置DAO

    在需要使用本地的数据库的时候(对于你的项目,不一定是本地),就如下配置:

    <property name="sessionFactory" ref="sessionFactory" />

    需要使用服务器的数据库时,如下配置:

    <property name="sessionFactory" ref="sessionFactory_t" />

    当然你也可以配置多个,根据需要多加配置即可。

  • 相关阅读:
    处理集合_创建Set
    处理集合_通过对象模拟Set
    处理集合_key相等
    处理集合_创建第1个map
    idea实用快捷键
    Typroa 常用快捷键
    关于IDEA无法加载main方法的bug
    TCP通信的实现代码
    用GUI实现java版贪吃蛇小游戏
    UDP实现在线聊天功能
  • 原文地址:https://www.cnblogs.com/toSeeMyDream/p/4509590.html
Copyright © 2011-2022 走看看