spring+hibernate配置多个数据源以及使用

       有时项目较大或者数据库设计的问题,一个项目可能需要连接多个数据源,现在用我的成功的demo写一下步骤,以连个数据源为例,更多个也是一样的。

1、多个数据库参数

       在jdbc.Properties中,配置两个数据库的连接。在此处的例子如下(我这里都是使用的MySql,如果要使用其他的请更换驱动),有些数据一样可以使用一个:

jdbc.driverClassName=com.mysql.jdbc.Driver

#数据库一
jdbc.url=jdbc:mysql://localhost:3306/zhangl1
jdbc.username=root
jdbc.password=root

#数据库二
jdbc.url.cm=jdbc:mysql://localhost:3306/zhangl2
jdbc.username.cm=root
jdbc.password.cm=root

2、配置数据源

       跟一个数据源配置是一样的,只是配置了两个而已,注意名字不要相同。这里使用的hikari连接池,其他的是类似的。

数据源1:


    
        
        
        
        
        
        
        
        
        
        
        
        
    

    
    
        
        
        
        
            
                
                hibernate.dialect = org.hibernate.dialect.MySQLDialect
                
                hibernate.jdbc.batch_size = 50
                
                hibernate.connection.autocommit = true
                
                hibernate.hbm2ddl.auto = update
                
                
                hibernate.connection.useUnicode = true
                
                hibernate.connection.characterEncoding = UTF-8
                
                hibernate.cache.use_query_cache = false
            
        
    

    
    
        
    

    
    
        
        
            
            
            
            
            
            
            
            
        
    

    
    
        
    
    

数据源2:


    
        
        
        
        
        
        
        
        
        
        
        
        
    

    
    
        
        
        
        
            
                
                hibernate.dialect = org.hibernate.dialect.MySQLDialect
                
                hibernate.jdbc.batch_size = 50
                
                hibernate.connection.autocommit = true
                
                hibernate.hbm2ddl.auto = update
                
                
                hibernate.connection.useUnicode = true
                
                hibernate.connection.characterEncoding = UTF-8
                
                hibernate.cache.use_query_cache = false
            
        
    

    
    
        
    

    
    
        
        
            
            
            
            
            
            
            
            
        
    

    
    
        
    
    

3、使用多数据源

       Dao中使用多数据源,获取到的sessionfactory是根据配置文件中配置的名字获取的,不同的名字代表不同的数据源。同理更多的数据源也是这样使用。

    @Resource
    private SessionFactory sessionFactory;
    @Resource
    private SessionFactory sessionFactorycm;

    private Session getCurrentSession() {
        return this.sessionFactory.getCurrentSession();
    }

    private Session getCurrentSessioncm() {
        return this.sessionFactorycm.getCurrentSession();
    }

    //使用示例
    //使用的是第一个数据源
    public List find(String hql) {
        return this.getCurrentSession().createQuery(hql).list();
        
    }

    //使用的是第二个数据源
    public List find(String hql) {
        return this.getCurrentSession2().createQuery(hql).list();
  
    }



你可能感兴趣的:(mysql数据库,编程语言)