Spring+Hibernate配置多数据源
配置说明
在实际应用中,经常会用到读写分离,这里就这种情况进行Spring+Hibernate的多数据源配置。此处的配置只是让读的方法操作一个数据库,写的方法操作另外一个数据库。
注:我这里的配置JDBC连接是放在properties文件中的,当然你也可以直接写在ApplicationCpntext.xml文件中或其他的配置方式。
配置步骤
1、配置多数据库
在jdbc.Properties中,配置两个数据库的连接。在此处的例子如下(我这里都是使用的MySql,如果要使用其他的请更换驱动):
- ## MySQL local
- jdbc.driverClassName=com.mysql.jdbc.Driver
- jdbc.url= jdbc:mysql://localhost:3306/数据库名?createDatabaseIfNotExist=true&useUnicode=true&characterEncoding=utf-8&zeroDateTimeBehavior=convertToNull
- jdbc.username=root
- jdbc.password=root
- ## MySql Server
- jdbc_t.driverClassName=com.mysql.jdbc.Driver
- jdbc_t.url= jdbc:mysql://服务器Ip:3306/数据库名(可以和上面不一样的)?createDatabaseIfNotExist=true&useUnicode=true&characterEncoding=utf-8&zeroDateTimeBehavior=convertToNull
- jdbc_t.username=root
- jdbc_t.password= root
注:jdbc.driverClassName和jdbc_t.driverClassName都可以使用jdbc.driverClassName的,如果使用一个则在后面的ApplicationContext.xml中配置一样的就可以了,这里为了方便说明,分开写。同理,如果用户名和密码都一样,也可以只用一个配置就可以了。
2、配置DataSource
这里使用的是DBCP连接池。
- <!-- 使用DBCP数据库连接池进行数据源的配置 -->
- <bean id="dataSource" class="org.apache.commons.dbcp.BasicDataSource" destroy-method="close">
- <property name="driverClassName" value="${jdbc.driverClassName}"/>
- <property name="url" value="${jdbc.url}"/>
- <property name="username" value="${jdbc.username}"/>
- <property name="password" value="${jdbc.password}"/>
- <property name="maxActive" value="100"/>
- <property name="maxWait" value="1000"/>
- <property name="poolPreparedStatements" value="true"/>
- <property name="defaultAutoCommit" value="true"/>
- <property name="removeAbandoned" value="true"/>
- <property name="logAbandoned" value="true"/>
- <property name="minEvictableIdleTimeMillis" value="10"/>
- <property name="removeAbandonedTimeout" value="5"/>
- </bean>
- <bean id="dataSource_t" class="org.apache.commons.dbcp.BasicDataSource" destroy-method="close">
- <property name="driverClassName" value="${jdbc_t.driverClassName}"/>
- <property name="url" value="${jdbc_t.url}"/>
- <property name="username" value="${jdbc_t.username}"/>
- <property name="password" value="${jdbc_t.password}"/>
- <property name="maxActive" value="100"/>
- <property name="maxWait" value="1000"/>
- <property name="poolPreparedStatements" value="true"/>
- <property name="defaultAutoCommit" value="true"/>
- <property name="removeAbandoned" value="true"/>
- <property name="logAbandoned" value="true"/>
- <property name="minEvictableIdleTimeMillis" value="10"/>
- <property name="removeAbandonedTimeout" value="5"/>
- </bean>
注:id不能重复,所以后面的使用了dataSource_t和dataSource以区别,这样才能区分使用的是那一个数据库。如果上面的driverClassName配置一样,你可以不用配置jdbc_t.driverClassName,都用jdbc.driverClassName即可。
3、配置sessionFactory
请注意标红加粗的地方:
- <bean id="sessionFactory" class="org.springframework.orm.hibernate3.annotation.AnnotationSessionFactoryBean">
- <property name="dataSource" ref="dataSource"/>
- <property name="configLocations">
- <list>
- <value>classpath:hibernate.cfg.xml</value>
- </list>
- </property>
- <bean id="sessionFactory_t" class="org.springframework.orm.hibernate3.annotation.AnnotationSessionFactoryBean">
- <property name="dataSource" ref="dataSource_t"/>
- <property name="configLocations">
- <list>
- <value>classpath: hibernate_t.cfg.xml</value>
- </list>
- </property>
注:hibernate.cfg.xml和hibernate_t.cfg.xml可以根据实际情况看看是否应该区别开。也可以共用一份。
4、配置DAO
在需要使用本地的数据库的时候(对于你的项目,不一定是本地),就如下配置:
<property name="sessionFactory" ref="sessionFactory" />
需要使用服务器的数据库时,如下配置:
<property name="sessionFactory" ref="sessionFactory_t" />
当然你也可以配置多个,根据需要多加配置即可。
Spring+Hibernate配置多数据源的更多相关文章
- spring+hibernate 配置多个数据源过程 以及 spring中数据源的配置方式
spring+hibernate 配置多个数据源过程 以及 spring中数据源的配置方式[部分内容转载] 2018年03月27日 18:58:41 守望dfdfdf 阅读数:62更多 个人分类: 工 ...
- Spring动态配置多数据源
Spring动态配置多数据源,即在大型应用中对数据进行切分,并且采用多个数据库实例进行管理,这样可以有效提高系统的水平伸缩性.而这样的方案就会不同于常见的单一数据实例的方案,这就要程序在运行时根据当时 ...
- 如何通过Spring Boot配置动态数据源访问多个数据库
之前写过一篇博客<Spring+Mybatis+Mysql搭建分布式数据库访问框架>描述如何通过Spring+Mybatis配置动态数据源访问多个数据库.但是之前的方案有一些限制(原博客中 ...
- spring+myBatis 配置多数据源,切换数据源
注:本文来源于 tianzhiwuqis <spring+myBatis 配置多数据源,切换数据源> 一个项目里一般情况下只会使用到一个数据库,但有的需求是要显示其他数据库的内容,像这样 ...
- Spring Boot配置多数据源并实现Druid自动切换
原文:https://blog.csdn.net/acquaintanceship/article/details/75350653 Spring Boot配置多数据源配置yml文件主数据源配置从数据 ...
- 一文读懂Spring动态配置多数据源---源码详细分析
Spring动态多数据源源码分析及解读 一.为什么要研究Spring动态多数据源 期初,最开始的原因是:想将答题服务中发送主观题答题数据给批改中间件这块抽象出来, 但这块主要使用的是mq消息的方式 ...
- Spring+hibernate 配置实例
转自:http://www.cnblogs.com/hongten/archive/2012/03/10/java_spring_hibernate.html 项目结构: http://www.cnb ...
- Spring MVC+Spring +Hibernate配置事务,但是事务不起作用
最近做项目,被一个问题烦恼了很久.使用Spring MVC+Spring +Hibernate开发项目,在使用注解配置事务管理,刚开始发现无论如何数据库都无法更新,但是可以从数据库查询到数据.怀疑是配 ...
- spring boot 配置双数据源mysql、sqlServer
背景:原来一直都是使用mysql数据库,在application.properties 中配置数据库信息 spring.datasource.url=jdbc:mysql://xxxx/test sp ...
随机推荐
- Oracle NULL 和空值
如果你工作中用到了Oracle,你必须要留意NULL和空值的处理与SQL Server上的不同.现在让我们看些例子. 建立这张数据库表并插入记录 CREATE TABLE TestNull(Col ...
- mongodb维护常用命令
一,用户操作:1. #进入数据库adminuse admin2. #增加或修改用户密码db.addUser('name','pwd')3. #查看用户列表db.system.users.find()4 ...
- Visual Event插件----查看html元素绑定的事件与方法的利器
WEB标准提倡结构.表现和行为相 分离,现在越来越多采用这种表现和行为的方式,但它也为我们开发调试带来一些问题,网页载入一堆JavaScript,,我们很难搞清楚最后在哪些元素的哪个动作绑定了事件,尤 ...
- iOS工程预编译文件的创建
在搜索 添加工程名/自己的pch文件名记住加后缀
- iOS第三方(显示视图的宽度高度)- MMPlaceHolder
github:https://github.com/adad184/MMPlaceHolder#readme appDelegate添加,影响全局 [MMPlaceHolderConfig defau ...
- 这个东西,写C++插件的可以用到。 RapidJSON —— C++ 快速 JSON 解析器和生成器
点这里 原文: RapidJSON —— C++ 快速 JSON 解析器和生成器 时间 2015-04-05 07:33:33 开源中国新闻原文 http://www.oschina.net/p/ ...
- Message,MessageQueue,Looper,Handler详解
Message,MessageQueue,Looper,Handler详解 一.几个关键概念 1.MessageQueue:是一种数据结构,见名知义,就是一个消息队列,存放消息的地方.每一个线程最 ...
- jmeter if 控制器
判断变量值是不是为空(有没有被赋值): "${jd_aid}"!="\${jd_aid}"
- VS2010/MFC编程入门之四(MFC应用程序框架分析)
VS2010/MFC编程入门之四(MFC应用程序框架分析)-软件开发-鸡啄米 http://www.jizhuomi.com/software/145.html 上一讲鸡啄米讲的是VS2010应用 ...
- 关于python中模块的import路径
前两天被一个同事问了一个python的问题: 为什么一个目录里的python文件引用不要另一个兄弟目录的python文件,但是这两个目录的父母录运行时是可以引用到了.当时感觉一直是模块和包的机制问题, ...