基于Struts2 Spring ibatis Oracle10g架构 多数据源动态切换实例

一、概述

基于Spring动态配置多数据源,在大型的应用中对数据进行切分,并且采用多个数据库实例进行管理,这样可以有效的提高系统的水平伸缩性,而这样的解决方案就会补同于常见的单一数据实例的方案,这就要程序在运行时根据当时的请求以及系统状态来动态的决定将数据存储在哪个数据库实例中,以及从哪个数据库提取数据。

Spring配置多个数据源的方式和具体使用过程,Spring对于多数据源,以数据库表为参照,大体上可以分为两大类情况:

1、表级上的跨数据库,即对于不同的数据库却有不相同的表(表名和表结构完全相同)。

2、非表级上的跨数据库,即多个数据源不存在相同的表。

Spring2.x的版本中采用Proxy模式,就是在方案中实现一个虚拟的数据源,并且采用它来封装数据源选择逻辑,这样就可以有效的地将数据源选择逻辑从Client中分离出来,Client提供选择所需上下文,由虚拟的DataSource根据Client提供的上下文来实现数据源的选择。具体实现就是,虚拟的DataSource仅需要继承AbstractRoutingDataSource实现determineCurrentLookupKey()在其中封装数选择逻辑。


二、前期准备

1、搭建好ssi的web架构

2、创建好oracle数据库实例,该实例中创建实例为orcl和n8web两个数据库实例,并且创建好表空间和对应的数据库表

3、配置好tomcat容易,能正常发布web工程。

4、每个实例中创建如下脚本的表和添加数据,为了区分web能动态的切换数据源,请在两个实例中添加不同的数据即可。

CREATE TABLE UserInfo
(
id        NUMBER(10) NOT NULL,
username  VARCHAR(32),
password  VARCHAR(32),
emial     VARCHAR(15),
sex       VARCHAR(10),
brithday  NUMBER(32),
province  VARCHAR(32),
city      VARCHAR(32),
state     VARCHAR(32),
realname  VARCHAR(32),
college   VARCHAR(255),
highschool  VARCHAR(255),
gradeschool  VARCHAR(32),
regtime      NUMBER(32),
logintime    NUMBER(32),
PRIMARY KEY (id)
);

insert into UserInfo values(1,'zhangsan','123456','[email protected]','男',null,'湖南','长沙','健康','张三','北京大学',null,null,null,null);
insert into UserInfo values(2,'zhangsan02','123456','[email protected]','女',null,'北京','北京','健康','张三','
  • 2
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

来生做一个苦行僧

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值