配置说明

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

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

配置步骤

1、配置多数据库

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

  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. ## MySql Server
  7. jdbc_t.driverClassName=com.mysql.jdbc.Driver
  8. jdbc_t.url= jdbc:mysql://服务器Ip:3306/数据库名(可以和上面不一样的)?createDatabaseIfNotExist=true&useUnicode=true&characterEncoding=utf-8&zeroDateTimeBehavior=convertToNull
  9. jdbc_t.username=root
  10. jdbc_t.password= root

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

2、配置DataSource

这里使用的是DBCP连接池。

  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

请注意标红加粗的地方:

  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. <bean id="sessionFactory_t" class="org.springframework.orm.hibernate3.annotation.AnnotationSessionFactoryBean">
  9. <property name="dataSource" ref="dataSource_t"/>
  10. <property name="configLocations">
  11. <list>
  12. <value>classpath: hibernate_t.cfg.xml</value>
  13. </list>
  14. </property>

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

4、配置DAO

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

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

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

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

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

Spring+Hibernate配置多数据源的更多相关文章

  1. spring+hibernate 配置多个数据源过程 以及 spring中数据源的配置方式

    spring+hibernate 配置多个数据源过程 以及 spring中数据源的配置方式[部分内容转载] 2018年03月27日 18:58:41 守望dfdfdf 阅读数:62更多 个人分类: 工 ...

  2. Spring动态配置多数据源

    Spring动态配置多数据源,即在大型应用中对数据进行切分,并且采用多个数据库实例进行管理,这样可以有效提高系统的水平伸缩性.而这样的方案就会不同于常见的单一数据实例的方案,这就要程序在运行时根据当时 ...

  3. 如何通过Spring Boot配置动态数据源访问多个数据库

    之前写过一篇博客<Spring+Mybatis+Mysql搭建分布式数据库访问框架>描述如何通过Spring+Mybatis配置动态数据源访问多个数据库.但是之前的方案有一些限制(原博客中 ...

  4. spring+myBatis 配置多数据源,切换数据源

    注:本文来源于  tianzhiwuqis <spring+myBatis 配置多数据源,切换数据源> 一个项目里一般情况下只会使用到一个数据库,但有的需求是要显示其他数据库的内容,像这样 ...

  5. Spring Boot配置多数据源并实现Druid自动切换

    原文:https://blog.csdn.net/acquaintanceship/article/details/75350653 Spring Boot配置多数据源配置yml文件主数据源配置从数据 ...

  6. 一文读懂Spring动态配置多数据源---源码详细分析

    Spring动态多数据源源码分析及解读 一.为什么要研究Spring动态多数据源 ​ 期初,最开始的原因是:想将答题服务中发送主观题答题数据给批改中间件这块抽象出来, 但这块主要使用的是mq消息的方式 ...

  7. Spring+hibernate 配置实例

    转自:http://www.cnblogs.com/hongten/archive/2012/03/10/java_spring_hibernate.html 项目结构: http://www.cnb ...

  8. Spring MVC+Spring +Hibernate配置事务,但是事务不起作用

    最近做项目,被一个问题烦恼了很久.使用Spring MVC+Spring +Hibernate开发项目,在使用注解配置事务管理,刚开始发现无论如何数据库都无法更新,但是可以从数据库查询到数据.怀疑是配 ...

  9. spring boot 配置双数据源mysql、sqlServer

    背景:原来一直都是使用mysql数据库,在application.properties 中配置数据库信息 spring.datasource.url=jdbc:mysql://xxxx/test sp ...

随机推荐

  1. [百度空间] [原] Empty base class optimization

    最近遇到了一个诡异的问题, 数组的数据不对, 最后发现是两个类型的大小不一样导致的. 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 ...

  2. HDU 1104 Remainder

    与前一题类似,也是BFS+记录路径, 但是有很多BUG点, 第一MOD操作与%不同i,其实我做的时候注意到了我们可以这样做(N%K+K)%K就可以化为正数,但是有一点要注意 N%K%M!=N%M%K; ...

  3. 抛弃jQuery 深入原生的JavaScript

    虽然我已经做网站建设工作10多年了,但我从最近3年才开始更多地学习如何更好的将纯JavaScript用于工作中,而不总是将jQuery考虑在第一位.现在我每天学习很多东西.这个过程让我觉得Adtile ...

  4. DevOps:怎么实现源代码注释和系统文档的自动化更新?

    [编者按]计算机软件传统定义为:软件是计算机系统中与硬件相依存的另一部分,软件包括程序.数据及其相关文档的完整集合.然而在时下的开发中,文档的合规性往往被忽视的干干净净.本文由 Todd Waits ...

  5. HDU 1715 大菲波数(JAVA, 简单题,大数)

    题目 //BigInteger 和 BigDecimal 是在java.math包中已有的类,前者表示整数,后者表示浮点数 import java.io.*; import java.util.*; ...

  6. SGU 102

    For given integer N (1<=N<=104) find amount of positive numbers not greater than N that coprim ...

  7. 一个轻量级的3D CSS 库

    JavaScript 3D library 该项目的目的是为了打造轻量级的.实用简单的3D CSS库. Usage使用方法 下载 minified库文件 和 css文件,并将其包含于你的HTML中,就 ...

  8. 关于javascript获取页面高度宽度

    在市容市政项目中,计算jqgrid的自适应高度时,发现jQuery(window).height()和jQuery(document).height()的数值有差异. 最初使用的是jQuery(doc ...

  9. Eclipse导入工程中文乱码问题

    此文引用自eclipse导入工程中文乱码问题,作者elleniou. 关于Eclipse导入工程中文乱码问题实在是一个非常令人头疼的,深感一定要彻底解决才算放心,故摘抄上文如下: eclipse之所以 ...

  10. http://blog.sina.com.cn/s/blog_5b9b4abe01017638.html

    http://blog.sina.com.cn/s/blog_5b9b4abe01017638.html