Spring MVC 配置多数据源
来源:互联网 发布:linux 移动非空目录 编辑:程序博客网 时间:2024/05/31 20:51
本来项目是一个数据源(Mysql),因为业务需求,需要添加Oracle数据源
查了很多资料之后综合了一下
环境:spring 3.0
下面是spring配置
配置两个BasicDataSource:dataSourceMySql,dataSourceOra
<bean id="dataSourceMySql" class="org.apache.commons.dbcp.BasicDataSource" destroy-method="close"> <property name="driverClassName" value="com.mysql.jdbc.Driver"></property> <property name="url" value="jdbc:mysql://url:8192/database"></property> <property name="username" value="user"></property> <property name="password" value="pass"></property></bean><bean id="dataSourceOra" class="org.apache.commons.dbcp.BasicDataSource" destroy-method="close"> <property name="driverClassName" value="oracle.jdbc.driver.OracleDriver"></property> <property name="url" value="jdbc:oracle:thin:@//url:1521/database"></property> <property name="username" value="user"></property> <property name="password" value="pass"></property></bean>
配置一个DynamicDataSource:dataSource
<bean id="dataSource" class="com.***.DynamicDataSource"> <!-- 通过key-value的形式来关联数据源 --> <property name="targetDataSources"> <map key-type="java.lang.String"> <entry value-ref="dataSourceMySql" key="dataSourceMySql"></entry> <entry value-ref="dataSourceOra" key="dataSourceOra"></entry> </map> </property> <property name="defaultTargetDataSource" ref="dataSourceMySql" > </property></bean>
配置一个SessionFactory
<bean id="sessionFactory" class="org.springframework.orm.hibernate4.LocalSessionFactoryBean"> <property name="dataSource"> <ref bean="dataSource" /> </property> <property name="packagesToScan"> <list> <value>com.**.model</value> <value>com.**.modelora</value> </list> </property> <property name="hibernateProperties"> <props> <prop key="hibernate.dialect"> org.hibernate.dialect.MySQLDialect </prop> <prop key="hibernate.hbm2ddl.auto">update</prop> <prop key="hibernate.show_sql">false</prop> <prop key="hibernate.format_sql">true</prop> <prop key="hibernate.jdbc.batch_size">100</prop> <prop key="hiberante.cache.use_second_level_cache">false</prop> </props> </property></bean>
DynamicDataSource实现
import org.springframework.jdbc.datasource.lookup.AbstractRoutingDataSource;public class DynamicDataSource extends AbstractRoutingDataSource{public static final String DATA_SOURCE_MYSQL = "dataSourceMySql"; public static final String DATA_SOURCE_ORA = "dataSourceOra"; private static final ThreadLocal<String> contextHolder = new ThreadLocal<String>(); public static void setCustomerType(String customerType) {contextHolder.set(customerType);}public static String getCustomerType() {return contextHolder.get();}public static void clearCustomerType() {contextHolder.remove();}@Overrideprotected Object determineCurrentLookupKey() { return getCustomerType();}}
最后一步,在进入数据库操作前加上
DynamicDataSource.setCustomerType(DynamicDataSource.DATA_SOURCE_MYSQL);
或者
DynamicDataSource.setCustomerType(DynamicDataSource.DATA_SOURCE_ORA);
目前有一个问题,scan出来的model(不管是第一张表的还是第二张表的)通过hibernate会自动在默认数据库里建表,导致第一个数据库里会多出空表。
暂存。
0 0
- spring MVC+MyBatis 多数据源配置
- spring mvc 多数据源的配置
- spring mvc 多数据源配置
- Spring MVC 配置多数据源
- Spring MVC +MyBatis 多数据源配置
- Spring mvc 配置mongodb多数据源
- Spring MVC多数据源动态切换配置
- spring配置多数据源
- Spring多数据源配置
- Spring多数据源配置
- spring多数据源配置
- Spring配置多数据源
- Spring多数据源配置
- Spring配置多数据源
- spring多数据源配置
- spring多数据源配置
- Spring多数据源配置
- spring 多数据源配置
- 图的表示
- CentOS6.5编译安装Nginx和Openssl
- IOS 网络浅析-(十 NSURLSession下载简介)
- 面试题一:使用 java 实现快速排序
- CentOS 下PXE+Kickstart无人值守安装操作系统
- Spring MVC 配置多数据源
- [BZOJ4467] [JSOI2013]数字理论
- iOS各大名人的博客
- laravel中使用apidoc
- 【杭电-oj】-3079-字符转换(元音大写,辅音小写)
- 二分图判定
- Fragment信息交互之多个Fragment在同一Activity中的交互
- 回来看看
- PHP学习必看的一些书