zoukankan      html  css  js  c++  java
  • Springboot spring data jpa 多数据源的配置01

    Springboot spring data jpa 多数据源的配置 (说明:这只是引入了多个数据源,他们各自管理各自的事务,并没有实现统一的事务控制)

    例: user数据库   global 数据库 

     

    1 .application.properties

    #database edi configuration
    
    datasource.edi.jdbc-url=jdbc:mysql:///:3306/Bookings?autoReconnect=true&rewriteBatchedStatements=true&zeroDateTimeBehavior=convertToNull&useUnicode=true&characterEncoding=utf8&characterSetResults=utf8
    datasource.edi.driverClassName=com.mysql.cj.jdbc.Driver
    datasource.edi.username=root
    datasource.edi.password=root
    datasource.edi.sql-script-encoding=UTF-8
    datasource.edi.validation-query=SELECT 1
    datasource.edi.initial-size=2
    #database edi configuration
    datasource.bookings.jdbc-url=jdbc:mysql:///:3306/Bookings?autoReconnect=true&rewriteBatchedStatements=true&zeroDateTimeBehavior=convertToNull&useUnicode=true&characterEncoding=utf8&characterSetResults=utf8
    datasource.bookings.driverClassName=com.mysql.cj.jdbc.Driver
    datasource.bookings.username=root
    datasource.bookings.password=root
    datasource.bookings.sql-script-encoding=UTF-8
    datasource.bookings.validation-query=SELECT 1
    datasource.bookings.initial-size=2

    # Show all queries spring.jpa.show-sql=true spring.jpa.properties.hibernate.format_sql=true spring.jpa.properties.hibernate.dialect = org.hibernate.dialect.MySQL5InnoDBDialect spring.jpa.hibernate.naming.physical-strategy =com.icil.milestone.push.query.strategy.UpperTableStrategy

    2.配置:  (下面为bookings数据库的配置)

    import org.springframework.beans.factory.annotation.Qualifier;
    import org.springframework.boot.context.properties.ConfigurationProperties;
    import org.springframework.boot.jdbc.DataSourceBuilder;
    import org.springframework.boot.orm.jpa.EntityManagerFactoryBuilder;
    import org.springframework.context.annotation.Bean;
    import org.springframework.context.annotation.Configuration;
    import org.springframework.data.jpa.repository.config.EnableJpaRepositories;
    import org.springframework.jdbc.core.JdbcTemplate;
    import org.springframework.orm.jpa.JpaTransactionManager;
    import org.springframework.orm.jpa.LocalContainerEntityManagerFactoryBean;
    import org.springframework.transaction.PlatformTransactionManager;
    import org.springframework.transaction.annotation.EnableTransactionManagement;
    
    import javax.persistence.EntityManagerFactory;
    import javax.sql.DataSource;
    
    @Configuration
    @EnableTransactionManagement
    @EnableJpaRepositories(entityManagerFactoryRef = "bookingsEntityManagerFactory",
        transactionManagerRef = "bookingsTransactionManager",
        basePackages = {"com.icil.elsa.collection.repository.bookings"})//repository的路径,给个数据源,务必单独一个文件夹
    public class BookingsDbConfig {
        
        @Qualifier("bookingsDataSource")
        @Bean(name = "bookingsDataSource")
        @ConfigurationProperties(prefix = "datasource.bookings") //指定数据源的配置
        public DataSource bookingsDataSource() {
            return DataSourceBuilder.create().build();
        }
    
        /*protected Map<String, Object> jpaProperties() {
            Map<String, Object> props = new HashMap<>();
            props.put("hibernate.physical_naming_strategy", SpringPhysicalNamingStrategy.class.getName());
            props.put("hibernate.implicit_naming_strategy", SpringImplicitNamingStrategy.class.getName());
            return props;
        }*/
    
        @Bean("bookingsEntityManagerFactory")
        public LocalContainerEntityManagerFactoryBean entityManagerFactory(
                EntityManagerFactoryBuilder builder, @Qualifier("bookingsDataSource") DataSource dataSource) {
            return builder
                    .dataSource(dataSource)
                    .packages("com.icil.elsa.collection.entries.bookings") ////指定实体对象的路径,给个数据源,务必单独一个文件夹
                    .persistenceUnit("bookings")
                    .build();
        }
    
        @Bean(name = "bookingsTransactionManager")
        public PlatformTransactionManager transactionManager(
                @Qualifier("bookingsEntityManagerFactory") EntityManagerFactory entityManagerFactory) {
            return new JpaTransactionManager(entityManagerFactory);
        }
    
        
        @Bean(name = "bookingJdbcTemplate")
        public JdbcTemplate bookingJdbcTemplate(@Qualifier("bookingsDataSource") DataSource dataSource) {
            return new JdbcTemplate(dataSource);
        }
        
    
    }

    配置:  (下面为EDI数据库的配置--和上面一样)  booking 改为EDI

  • 相关阅读:
    Tomcat的SessionID引起的Session Fixation和Session Hijacking问题
    别把项目成功当目标!——项目经理的误区(1)(转)
    技术,项目经理的命?——项目经理的误区(3)(转)
    项目管理中,最难管的是什么?(转)
    项目经理的超越(三)人际优先,做事上的超越(转)
    大丈夫不可一日无权啊!——项目经理的误区(2)(转)
    舌尖上的职场(二)一起去吃饭吧!(转)
    舌尖上的职场(一)你最近还好吗?(转)
    【项目经理之修炼(10)】《初级篇》人际关系问题也是可以避免的(转)
    gcc与g++区别
  • 原文地址:https://www.cnblogs.com/lshan/p/9687451.html
Copyright © 2011-2022 走看看