`
a387776286
  • 浏览: 11971 次
  • 性别: Icon_minigender_1
  • 来自: 太原
社区版块
存档分类
最新评论

java多数据源切换

 
阅读更多
开发中会出现多数据源切换的需求,
方案1:
jdbc方式,建立多个数据源连接
private static String driver;

	private static String url;

	private static String username;

	private static String password;

	static {
		try {
			Properties props = new Properties();
			InputStream is = ConnectionUtils.class.getClassLoader().getResourceAsStream("tools/db/jdbc/db.properties");
			props.load(is);
			driver = props.getProperty("driver");
			url = props.getProperty("url");
			username = props.getProperty("username");
			password = props.getProperty("password");
			
			Class.forName(driver);

		} catch (Exception e) {
			e.printStackTrace();
			throw new RuntimeException("", e);
		}
	}

	/**
	 * 
	 */
	public static Connection openConnection() throws SQLException {
		return DriverManager.getConnection(url, username, password);
	}

方案2:使用hibernate连接oracle为例,在实体中添加表空间的注解
需要在space1的为当前用户授权访问
grant select on 表空间.表名 to 访问用户的表空间;

@Entity
@Table(name = "T_ORDER", schema = "space1")
public class TOrder implements java.io.Serializable {
......
}

方案3:
使用spring的多数据源切换
<bean name="dataSourceA" class="com.alibaba.druid.pool.DruidDataSource">
</bean>
<bean name="dataSourceB" class="com.alibaba.druid.pool.DruidDataSource">
</bean>
 <bean id="dynamicDataSource" class="ps.frank.moreDB.service.dynamic.DynamicDataSource">  
      <property name="targetDataSources">  
            <map key-type="java.lang.String">  
                <entry value-ref="dataSourceA" key="dataSourceA"></entry>  
                <entry value-ref="dataSourceB" key="dataSourceB"></entry>  
            </map>  
        </property>  
        <property name="defaultTargetDataSource" ref="dataSourceA">  
        </property>  
    </bean>

import org.springframework.jdbc.datasource.lookup.AbstractRoutingDataSource;

public class DynamicDataSource extends AbstractRoutingDataSource{

	@Override
	protected Object determineCurrentLookupKey() {
		return DBContextHolder.getDBType(); 
	}

}
分享到:
评论

相关推荐

    SpringBoot配置多数据源实现动态切换数据源

    本文将深入探讨如何在SpringBoot项目中配置多数据源,并实现数据源的动态切换,帮助你理解和掌握这一核心技能。 首先,我们理解"多数据源"的概念。在SpringBoot应用中,多数据源意味着系统能够连接并操作多个不同的...

    多数据源切换

    在Java开发中,多数据源切换是一项重要的技术实践,它允许应用程序根据业务需求灵活地连接和操作不同的数据库。这项技术可以极大地降低系统间的耦合度,提高代码的可维护性和扩展性,尤其对于大型分布式系统而言,其...

    java多数据源自动切换

    总结来说,Java多数据源自动切换结合Spring AOP和自定义注解,可以有效地管理和控制数据源的使用。结合ShardingSphere这样的中间件,我们可以构建更强大、灵活的分布式数据库解决方案。在实际开发中,需要注意数据源...

    Springboot整合Druid与Mybatis的多数据源切换

    本教程将详细介绍如何在Spring Boot项目中整合Druid数据源池与Mybatis,实现多数据源切换的功能,并提供一个亲测可用的解决方案。 首先,让我们了解Spring Boot、Druid和Mybatis这三大组件的基础知识: **Spring ...

    springboot实现多数据源而且加上事务不会使aop切换数据源失效

    本示例主要讲解如何使用Spring Boot结合MyBatis实现多数据源切换,并确保AOP事务管理仍然有效。 首先,我们需要配置多数据源。在Spring Boot中,可以使用`DataSource`接口的实现类,如`HikariCP`或`Druid`,创建两...

    java多数据源代码实例

    2. 事务管理需要考虑到数据源切换,可以通过编程式事务管理或声明式事务管理实现。 五、代码实例 在实际项目中,可以创建两个数据库连接池(如HikariCP或Druid),然后根据业务需求在Service层或Controller层切换...

    Java多数据源源码

    Druid是一个强大的Java数据源连接池,它具有性能优异、监控完善、扩展性强等特点。在多数据源场景下,Druid的动态数据源支持使得我们可以在运行时切换或管理不同的数据源。Druid DataSource提供了如下的功能: 1. ...

    数据源切换

    在数据源切换的场景中,Druid可以作为中间层,管理多个数据库连接,并根据配置或编程方式实现动态数据源切换,确保业务在不同数据库间平滑过渡。 实现数据源切换的步骤通常包括以下几个方面: 1. **配置多数据源**...

    java多数据源

    下面将详细阐述如何在Java中实现多数据源切换,并探讨相关技术。 首先,我们要理解什么是SpringMVC。SpringMVC是Spring框架的一部分,它是一个用于构建Web应用的模型-视图-控制器(MVC)架构。通过SpringMVC,...

    多数据源的切换思路

    在IT行业中,多数据源切换是一个常见的需求,特别是在大型企业级应用中,为了实现高可用性和数据冗余,系统往往需要连接多个数据库。本话题主要围绕"多数据源的切换思路"展开,结合源码分析和实用工具,来探讨如何在...

    java 多数据源

    在Java开发中,多数据源是指应用程序可以同时连接并操作多个不同的数据库。这种技术在大型系统中非常常见,比如在需要实现数据隔离、读写分离、分库分表等复杂需求时,多数据源就显得尤为重要。Spring、SpringMVC和...

    Mybatis+Spring+SpringMVC+quartz多数据源切换

    "Mybatis+Spring+SpringMVC+quartz多数据源切换"的架构设计就是为了满足这样的场景。这个项目结合了四个关键的技术组件,它们分别是Mybatis、Spring、SpringMVC和Quartz,下面将详细介绍这些技术以及它们在多数据源...

    根据用户动态切换数据源java代码 dynamicds

    在Java开发中,特别是在SpringBoot框架下,动态数据源是一个重要的功能,它允许应用程序根据不同的业务需求或用户权限切换到不同的数据库。动态数据源的实现能够极大地提高系统的灵活性和可扩展性,使得一个应用可以...

    spring+druid+AtomikosDataSource实现多数据源切换及分布式事务控制

    在现代企业级应用开发中,多数据源切换和分布式事务管理是常见的需求,尤其是在大型分布式系统中。Spring框架因其强大的依赖注入和AOP(面向切面编程)特性,成为Java领域首选的轻量级框架。Druid是一个优秀的数据库...

    动态切换多数据源

    在JavaWeb开发中,"动态切换多数据源"是一个重要的技术点,特别是在大型企业级应用中,为了实现数据的高可用性、隔离性和扩展性,往往需要接入多个数据库。本项目是一个基于Eclipse、MyBatis和Mysql的多数据源示例,...

    使用springboot + JPA / MyBatis 实现多数据源动态切换

    4. **动态数据源切换**:对于MyBatis,可以在SqlSessionTemplate中设置数据源,或者使用`@MapperScan`注解配合自定义数据源路由类来实现。 **六、实战项目分析** 在`springboot-multi-datasource-master`项目中,...

    Spring动态切换多数据源Demo

    "Spring动态切换多数据源Demo"是一个示例项目,它展示了如何在Spring中实现灵活的数据源切换。 首先,我们需要了解Spring中的数据源。在Spring中,数据源(DataSource)是Java中定义的javax.sql.DataSource接口的...

    java spring 多数据源

    在Java Spring框架中,多数据源的实现是一个重要的特性,特别是在大型企业级应用中,它允许应用程序连接到多个数据库,从而实现数据隔离、负载均衡或读写分离等高级功能。本教程将深入探讨如何在Spring中配置和管理...

    springboot多数据源切换mysql+sql server事例

    本示例“springboot多数据源切换mysql+sql server”是关于如何在Spring Boot项目中配置和使用多个数据库的数据源切换。下面将详细阐述这个主题的知识点。 首先,**多数据源**是指在一个应用中同时连接并操作多个...

    SpringBoot+Atomikos分布式事务及多数据源动态切换,两种demo

    本文将深入探讨如何在Spring Boot项目中实现Atomikos分布式事务以及动态数据源切换的两种示例。 首先,我们需要理解什么是分布式事务。在分布式系统中,事务需要跨越多个独立的数据库或服务进行操作。分布式事务的...

Global site tag (gtag.js) - Google Analytics