
由于项目需要,需要为我的springMCV项目配置mysql+oracle两种数据源,运行时进行切换。由于技术水平有限,断断续续用了一周时间解决了这个小问题(比较懒),特来发篇博客,为以后需要的朋友提供参考。
首先,这个项目的多数据源配置建立在mysql已经搭建完成的基础上,这部分的源代码github上都有,网上也有不少教程,我就不作说明了,直接讲如何配置oracle。
oracle我用的版本是11g,具体版本是112010。下载及安装,建表过程省略(详情请百度,建表推荐用pl/sql)
我的项目中,数据库的账号密码都是通过properties文件配置的,首先你需要配置好spring项目中的oracle的url,账号以及密码。
dataSource2driver=oraclejdbcdriverOracleDriver
dataSource2url=jdbc\:oracle\:thin\:@localhost\:1521\:orcl
dataSource2username=sys as sysdba
dataSource2password=a123456
driver表示驱动名,username表示登录oracle的用户名,这里需要注意的是oracle非常注重数据库管理员的权限,因此在登录时需要指明登录者的身份,pl/sql以及navicat会让你选择以什么角色登录,而在spring项目中访问时,直接输入 用户名 + as sysdba 的形式作为用户名,密码就是先前安装oracle时设置的密码。
接下来配置spring的配置文件,来配置2个数据源,我主要是参考了网上的文章,大致原理是为不同数据源配置不同的sqlSessionFactory以及sqlSessionTemplate,为项目编写工具类,通过设置不同的键值切换数据源。
JPA全称为Java Persistence API(Java持久层API),它是Sun公司在JavaEE 5中提出的Java持久化规范。它为Java开发人员提供了一种对象/关联映射工具,来管理Java应用中的关系数据,JPA吸取了目前Java持久化技术的优点,旨在规范、简化Java对象的持久化工作。很多ORM框架都是实现了JPA的规范,如:Hibernate、EclipseLink。
Spring Data JPA旨在通过减少实际需要的工作量来显著改善数据访问层的实现。它在JPA的基础上做了一些封装,可以轻松实现基于JPA的存储库。 此模块处理对基于JPA的数据访问层的增强支持。 它使构建使用数据访问技术的Spring驱动应用程序变得更加容易。
需要注意的是JPA统一了Java应用程序访问ORM框架的规范
JPA为我们提供了以下规范:
以上的定义引用自网络技术文章,我还在不断理解与学习中,我们先来Demo一个例子:
5分钟入手Spring Boot
>
我们这边是所有服务统一使用同一数据源,数据库连接信息配置到环境变量之中,所有微服务统一读取这组环境变量。
你要是设置成多数据源,未来系统故障时查找数据方面的问题多麻烦啊。
对于业务需要,真的是有比如两个数据源的,假设是主数据源A和辅数据源B,那么可以基于辅数据源B搭建一个微服务,暴露API,由主数据源服务在需要时调用辅数据源的服务的API就好。
不过如果辅数据源可能只有一个最简单的查询,没有更多 *** 作了,你在主数据源服务中直接配置多数据源也没问题。
我仔细想了一下,似乎还是各个数据源单独起一个自己的服务这样更有“分布式微服务”的样子呢。
这个在spring的 applicationComtextxml文件里配置(一般是这个文件 你也可以把他改为其他文件名),
#oracle\u89c6\u56fe\u6570\u636e\u5e93\u8fde\u63a5\u53c2\u6570hibernatedialect=orghibernatedialectOracleDialect
validationQueryoracle=SELECT 1 FROM DUAL
jdbcurlcrm=jdbc:oracle:thin:@localhost:1521:orcl
jdbcusernamecrm=crm
jdbcpasswordcrm=crm
jdbcdbType=oracle
#mysql \u6570\u636e\u5e93\u8fde\u63a5\u53c2\u6570
#hibernatedialect=orghibernatedialectMySQLDialect
#validationQuerysqlserver=SELECT 1
#jdbcurlcrm=jdbc:mysql://localhost:3306/testuseUnicode=true&characterEncoding=UTF-8
#jdbcusernamecrm=root
#jdbcpasswordcrm=root
#jdbcdbType=mysql
//配置数据源
<bean id="dbcp_dataSource" destroy-method="close" class="orgapachecommonsdbcpBasicDataSource">
<property name="driverClassName" value="${jdbcdriverClassName}" />
<property name="url" value="${jdbcurlcrm}" />
<property name="username" value="${jdbcusernamecrm}" />
<property name="password" value="${jdbcpasswordcrm}" />
</bean> -->
在这里你可以多配置几个数据源
。。。。
然后就可以动态的修改数据源集合了
<bean id="sessionFactory"
class="orgspringframeworkormhibernate3LocalSessionFactoryBean">
<property name="dataSource" ref="dbcp_dataSource" />
<!--ORM映射文件:mappingResources-->
<!-- ORM目录 -->
<property name="mappingDirectoryLocations">
<value>classpath:com/zakhas/ospm/model/hbm/</value>
</property>
这里的dbcp_dataSource 是我的oracle数据库,你可以在这里切换其他的数据库。
因为涉及到一些项目,我做了些改动,可能有些错误,不知道你看懂了啵
以上就是关于spring中mysql多数据源切换 怎么配置(配置文件)全部的内容,包括:spring中mysql多数据源切换 怎么配置(配置文件)、Spring Boot数据库交互之Spring Data JPA、SpringCloud项目,每个微服务配置一个数据源好还是微服务里配置多个数据源好等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)