使用spring+spring MVC + hibernate 实现不同数据库类型(sql server & orcale)切换获取数据

作者:超级管理员 更新时间:2017-10-31 17:59:16 来源:未知 点击:15642
最近按照公司要求  搭个SSH框架   要动态切换获取数据库  网上百度了很多教程   自己实现不了 毕竟就是一个初级菜鸟   求大神帮个忙  提供点思路  或者   搭个给我  有偿…… -----
最近按照公司要求  搭个SSH框架   要动态切换获取数据库  网上百度了很多教程   自己实现不了 毕竟就是一个初级菜鸟   求大神帮个忙  提供点思路  或者   搭个给我  有偿…… 
-------------------------------
该回复于2017-10-27 17:04:48被管理员删除
-------------------------------
百度谷歌。。。。。。。。。。
-------------------------------
引用 2 楼 pany1209 的回复:
百度谷歌。。。。。。。。。。


额……百度到了一大堆  自己实现不了~!!!本来就不会  hibernate~   
-------------------------------
以下是我们的Spring下的多数据源配置,直接指定什么 dao 什么什么数据库。一个事务中也可以用多个数据库。数据库事务可以自己配置

<!-- 多数据源配置 -->
<!-- druid.h2 -->
<bean id="jade.dataSource.reyo.sdk.dao.h2" class="com.alibaba.druid.pool.DruidDataSource"
init-method="init" destroy-method="close">
<!-- 基本属性 url、user、password -->
<property name="driverClassName" value="${h2.driverClassName}" />
<property name="url" value="${h2.url}" />
<property name="username" value="${h2.username}" />
<property name="password" value="${h2.password}" />

<!-- 配置监控统计拦截的filters 需要同时开启sql防火墙和url监控 -->
<property name="filters" value="stat" />

<!-- 配置初始化大小、最小、最大 -->
<property name="initialSize" value="1" />
<property name="minIdle" value="1" />
<property name="maxActive" value="50" />

<!-- 配置获取连接等待超时的时间 -->
<property name="maxWait" value="60000" />

<!-- 配置间隔多久才进行一次检测,检测需要关闭的空闲连接,单位是毫秒 -->
<property name="timeBetweenEvictionRunsMillis" value="60000" />

<!-- 配置一个连接在池中最小生存的时间,单位是毫秒 -->
<property name="minEvictableIdleTimeMillis" value="300000" />

<property name="validationQuery" value="SELECT 'x'" />
<property name="testWhileIdle" value="true" />
<property name="testOnBorrow" value="false" />
<property name="testOnReturn" value="false" />

<!-- 如果用Oracle,则把poolPreparedStatements配置为true,mysql可以配置为false。分库分表较多的数据库,建议配置为false。 -->
<property name="poolPreparedStatements" value="false" />

<property name="keepAlive" value="true" />
</bean>
<!-- Druid -->

<!-- druid.mysql -->
<bean id="jade.dataSource.reyo.sdk.dao.mysql" class="com.alibaba.druid.pool.DruidDataSource"
init-method="init" destroy-method="close">
<!-- 基本属性 url、user、password -->
<property name="driverClassName" value="${mysql.driverClassName}" />
<property name="url" value="${mysql.url}" />
<property name="username" value="${mysql.username}" />
<property name="password" value="${mysql.password}" />

<!-- 配置监控统计拦截的filters 需要同时开启sql防火墙和url监控 -->
<property name="filters" value="stat" />

<!-- 配置初始化大小、最小、最大 -->
<property name="initialSize" value="1" />
<property name="minIdle" value="1" />
<property name="maxActive" value="50" />

<!-- 配置获取连接等待超时的时间 -->
<property name="maxWait" value="60000" />

<!-- 配置间隔多久才进行一次检测,检测需要关闭的空闲连接,单位是毫秒 -->
<property name="timeBetweenEvictionRunsMillis" value="60000" />

<!-- 配置一个连接在池中最小生存的时间,单位是毫秒 -->
<property name="minEvictableIdleTimeMillis" value="300000" />

<property name="validationQuery" value="SELECT 'x'" />
<property name="testWhileIdle" value="true" />
<property name="testOnBorrow" value="false" />
<property name="testOnReturn" value="false" />

<!-- 如果用Oracle,则把poolPreparedStatements配置为true,mysql可以配置为false。分库分表较多的数据库,建议配置为false。 -->
<property name="poolPreparedStatements" value="false" />

<property name="keepAlive" value="true" />
</bean>
<!-- Druid -->
-------------------------------
引用 4 楼 reyoreyoreyo 的回复:
以下是我们的Spring下的多数据源配置,直接指定什么 dao 什么什么数据库。一个事务中也可以用多个数据库。数据库事务可以自己配置

<!-- 多数据源配置 -->
<!-- druid.h2 -->
<bean id="jade.dataSource.reyo.sdk.dao.h2" class="com.alibaba.druid.pool.DruidDataSource"
init-method="init" destroy-method="close">
<!-- 基本属性 url、user、password -->
<property name="driverClassName" value="${h2.driverClassName}" />
<property name="url" value="${h2.url}" />
<property name="username" value="${h2.username}" />
<property name="password" value="${h2.password}" />

<!-- 配置监控统计拦截的filters 需要同时开启sql防火墙和url监控 -->
<property name="filters" value="stat" />

<!-- 配置初始化大小、最小、最大 -->
<property name="initialSize" value="1" />
<property name="minIdle" value="1" />
<property name="maxActive" value="50" />

<!-- 配置获取连接等待超时的时间 -->
<property name="maxWait" value="60000" />

<!-- 配置间隔多久才进行一次检测,检测需要关闭的空闲连接,单位是毫秒 -->
<property name="timeBetweenEvictionRunsMillis" value="60000" />

<!-- 配置一个连接在池中最小生存的时间,单位是毫秒 -->
<property name="minEvictableIdleTimeMillis" value="300000" />

<property name="validationQuery" value="SELECT 'x'" />
<property name="testWhileIdle" value="true" />
<property name="testOnBorrow" value="false" />
<property name="testOnReturn" value="false" />

<!-- 如果用Oracle,则把poolPreparedStatements配置为true,mysql可以配置为false。分库分表较多的数据库,建议配置为false。 -->
<property name="poolPreparedStatements" value="false" />

<property name="keepAlive" value="true" />
</bean>
<!-- Druid -->

<!-- druid.mysql -->
<bean id="jade.dataSource.reyo.sdk.dao.mysql" class="com.alibaba.druid.pool.DruidDataSource"
init-method="init" destroy-method="close">
<!-- 基本属性 url、user、password -->
<property name="driverClassName" value="${mysql.driverClassName}" />
<property name="url" value="${mysql.url}" />
<property name="username" value="${mysql.username}" />
<property name="password" value="${mysql.password}" />

<!-- 配置监控统计拦截的filters 需要同时开启sql防火墙和url监控 -->
<property name="filters" value="stat" />

<!-- 配置初始化大小、最小、最大 -->
<property name="initialSize" value="1" />
<property name="minIdle" value="1" />
<property name="maxActive" value="50" />

<!-- 配置获取连接等待超时的时间 -->
<property name="maxWait" value="60000" />

<!-- 配置间隔多久才进行一次检测,检测需要关闭的空闲连接,单位是毫秒 -->
<property name="timeBetweenEvictionRunsMillis" value="60000" />

<!-- 配置一个连接在池中最小生存的时间,单位是毫秒 -->
<property name="minEvictableIdleTimeMillis" value="300000" />

<property name="validationQuery" value="SELECT 'x'" />
<property name="testWhileIdle" value="true" />
<property name="testOnBorrow" value="false" />
<property name="testOnReturn" value="false" />

<!-- 如果用Oracle,则把poolPreparedStatements配置为true,mysql可以配置为false。分库分表较多的数据库,建议配置为false。 -->
<property name="poolPreparedStatements" value="false" />

<property name="keepAlive" value="true" />
</bean>
<!-- Druid -->




引用 4 楼 reyoreyoreyo 的回复:
以下是我们的Spring下的多数据源配置,直接指定什么 dao 什么什么数据库。一个事务中也可以用多个数据库。数据库事务可以自己配置

<!-- 多数据源配置 -->
<!-- druid.h2 -->
<bean id="jade.dataSource.reyo.sdk.dao.h2" class="com.alibaba.druid.pool.DruidDataSource"
init-method="init" destroy-method="close">
<!-- 基本属性 url、user、password -->
<property name="driverClassName" value="${h2.driverClassName}" />
<property name="url" value="${h2.url}" />
<property name="username" value="${h2.username}" />
<property name="password" value="${h2.password}" />

<!-- 配置监控统计拦截的filters 需要同时开启sql防火墙和url监控 -->
<property name="filters" value="stat" />

<!-- 配置初始化大小、最小、最大 -->
<property name="initialSize" value="1" />
<property name="minIdle" value="1" />
<property name="maxActive" value="50" />

<!-- 配置获取连接等待超时的时间 -->
<property name="maxWait" value="60000" />

<!-- 配置间隔多久才进行一次检测,检测需要关闭的空闲连接,单位是毫秒 -->
<property name="timeBetweenEvictionRunsMillis" value="60000" />

<!-- 配置一个连接在池中最小生存的时间,单位是毫秒 -->
<property name="minEvictableIdleTimeMillis" value="300000" />

<property name="validationQuery" value="SELECT 'x'" />
<property name="testWhileIdle" value="true" />
<property name="testOnBorrow" value="false" />
<property name="testOnReturn" value="false" />

<!-- 如果用Oracle,则把poolPreparedStatements配置为true,mysql可以配置为false。分库分表较多的数据库,建议配置为false。 -->
<property name="poolPreparedStatements" value="false" />

<property name="keepAlive" value="true" />
</bean>
<!-- Druid -->

<!-- druid.mysql -->
<bean id="jade.dataSource.reyo.sdk.dao.mysql" class="com.alibaba.druid.pool.DruidDataSource"
init-method="init" destroy-method="close">
<!-- 基本属性 url、user、password -->
<property name="driverClassName" value="${mysql.driverClassName}" />
<property name="url" value="${mysql.url}" />
<property name="username" value="${mysql.username}" />
<property name="password" value="${mysql.password}" />

<!-- 配置监控统计拦截的filters 需要同时开启sql防火墙和url监控 -->
<property name="filters" value="stat" />

<!-- 配置初始化大小、最小、最大 -->
<property name="initialSize" value="1" />
<property name="minIdle" value="1" />
<property name="maxActive" value="50" />

<!-- 配置获取连接等待超时的时间 -->
<property name="maxWait" value="60000" />

<!-- 配置间隔多久才进行一次检测,检测需要关闭的空闲连接,单位是毫秒 -->
<property name="timeBetweenEvictionRunsMillis" value="60000" />

<!-- 配置一个连接在池中最小生存的时间,单位是毫秒 -->
<property name="minEvictableIdleTimeMillis" value="300000" />

<property name="validationQuery" value="SELECT 'x'" />
<property name="testWhileIdle" value="true" />
<property name="testOnBorrow" value="false" />
<property name="testOnReturn" value="false" />

<!-- 如果用Oracle,则把poolPreparedStatements配置为true,mysql可以配置为false。分库分表较多的数据库,建议配置为false。 -->
<property name="poolPreparedStatements" value="false" />

<property name="keepAlive" value="true" />
</bean>
<!-- Druid -->


能把2个类也贴出来么?
-------------------------------
楼上说得对,我们也是开两个数据源,把Dao分成两部分,分别操作两个数据源,事务也可以用aop分开
-------------------------------
引用 6 楼 weixin_38762114 的回复:
楼上说得对,我们也是开两个数据源,把Dao分成两部分,分别操作两个数据源,事务也可以用aop分开




这就比较尴尬了……     也就是 2个数据库对应不同的dao    ……
-------------------------------
好吧  没人 结贴散分   

推荐阅读

热门内容

想了好久,还是不知道在哪出问题了,驱动包

前台错误:type Exception ...

关于java多线程的一个问题

做一个多线程的题目实现*g*g*g*g*...

萌新小白学习遇到问题,求各位大佬帮忙看一

这个是题目package edu.exa...

关于不确定字段查询问题-mybatis

本帖最后由liushuiwuyizhe于...

maven项目打包

求教。一个关于maven打包的问题---...

Java maven项目启动时报错,求救

我在svn上档下来的项目然后转成mave...

郁闷,明明已经导入这些JAR包了怎么还是

在web.xml里面加了这个配置,想通过...

一直报无法解析.hbm.xml 困扰了

一直报无法解析.hbm.xml   困扰...

一直报Could not parse m

这问题整整困扰了 我一天一夜  请大神帮...

什么原因造成mysql无法保存数据

1、我删除了所有表的主外键关联2、也没找...

最新内容

swing 判断单选框问题

    鼓动鼓动 swing  用的 windowbuilder 来进行设计的,...

关于java客户端与mqtt服务器用证书连接的问题

在网上找了很多例子,也实现了用java客户端通过证书连接mqtt服务器,但是有疑...

想了好久,还是不知道在哪出问题了,驱动包也重新下载了好几次,用户密码没问题

前台错误:type Exception reportmessage An exc...

GlassFish5部署应用报错,求大神教育

GlassFish5部署应用报错:Error occurred during d...

关于java多线程的一个问题

做一个多线程的题目实现*g*g*g*g*g*g.......实现其实不难,不过中...

萌新小白学习遇到问题,求各位大佬帮忙看一下哪里出错了?

这个是题目package edu.exam;import java.util.S...

最近学习spring aop 遇到的小白问题,求解答!!

package com.dao;import org.springframewo...

Java代码生成的随机数如果数据库的主键不能对应

建了一张表,查询到了所有题目的数量,然后根据题数随机生成你输入的几个随机数:(i...

web项目在MyEclipse部署正常,打成War包部署到外部Tomcat报空指针

如题,新人小白一个,新网大家帮帮忙用myeclipse启用外部Tomcat调试也...

IDEA里无法创建命名为build的目录?

IDEA里,无法创建命名为build的目录。提示为ignored name,无法...

魅红女性手机微博上线 魅蓝有女朋友了?

    中关村在线消息:今天上午,一个名为“魅红女性手机”的微博账号悄然上线,从...

使用spring+spring MVC + hibernate 实现不同数据库类型(sql server & orcale)切换获取数据

最近按照公司要求  搭个SSH框架   要动态切换获取数据库  网上百度了很多教...

求1到N的和

// 递归function Add($num){    switch ($num...

魅蓝打脸!未发售Note6绿色版高价转卖

    中关村在线消息:日前,有贴吧有网友晒出了他购买的海贼王典藏版的魅蓝Not...

过滤器里面可以拿到session,但是从session里面取出的值为空

本帖最后由zhouhai6833于2017-10-2710:54:55编辑用的s...

Maven的no such method错误

 这个方法在spring jar包里找到了,那么是不是有冲突了?还有我的IDEA...

curl无法获取数据,浏览器正常

curl 无法获取数据 ,报错:Empty reply from serverc...

诺基亚东家HMD新人事任命 临时CEO转正

    中关村在线消息:今天,诺基亚的东家HMD宣布了新的人事任命:临时CEO弗...

升级使用tomcat8.5,jdk8以后出现的报错

信息: Error parsing HTTP request header No...

curl 无法获取数据 Empty reply from server

curlDataTest("http://zhannei.baidu.com/a...