中文字幕第五页-中文字幕第页-中文字幕韩国-中文字幕最新-国产尤物二区三区在线观看-国产尤物福利视频一区二区

Springboot2.1.5配置JPA多數(shù)據(jù)源的方法

這篇文章主要介紹“Springboot 2.1.5 配置JPA多數(shù)據(jù)源的方法”,在日常操作中,相信很多人在Springboot 2.1.5 配置JPA多數(shù)據(jù)源的方法問題上存在疑惑,小編查閱了各式資料,整理出簡單好用的操作方法,希望對大家解答”Springboot 2.1.5 配置JPA多數(shù)據(jù)源的方法”的疑惑有所幫助!接下來,請跟著小編一起來學(xué)習(xí)吧!

成都創(chuàng)新互聯(lián)公司專注于阿拉爾企業(yè)網(wǎng)站建設(shè),成都響應(yīng)式網(wǎng)站建設(shè)公司,商城建設(shè)。阿拉爾網(wǎng)站建設(shè)公司,為阿拉爾等地區(qū)提供建站服務(wù)。全流程按需制作網(wǎng)站,專業(yè)設(shè)計,全程項目跟蹤,成都創(chuàng)新互聯(lián)公司專業(yè)和態(tài)度為您提供的服務(wù)

最近在學(xué)sprinJpa,照著網(wǎng)上博客想試著配一下Jpa的多數(shù)據(jù)源,但發(fā)現(xiàn)因為springboot版本太高的問題,網(wǎng)上的demo都不適用,導(dǎo)致找了很久才找到解決辦法。現(xiàn)在把操作過程記錄如下。

一、yml配置

spring:
  datasource:
    test1:
      driver-class-name: com.MySQL.jdbc.Driver
      password: 123456
      #url: jdbc:mysql://localhost:3306/test?useUnicode=true&characterEncoding=UTF-8&serverTimezone=UTC&useSSL=false
      #springboot2.0以上
      jdbc-url: jdbc:mysql://localhost:3306/test?useUnicode=true&characterEncoding=UTF-8&serverTimezone=UTC&useSSL=false
      username: root
    test2:
      driver-class-name: com.mysql.jdbc.Driver
      password: 123456
      #url: jdbc:mysql://localhost:3306/test2?useUnicode=true&characterEncoding=UTF-8&serverTimezone=UTC&useSSL=false
      #springboot2.0以上
      jdbc-url: jdbc:mysql://localhost:3306/test2?useUnicode=true&characterEncoding=UTF-8&serverTimezone=UTC&useSSL=false
      username: root
  jpa:
    ## 是否打印sql
    show-sql: true
    properties:
      hibernate:
        # 指定引擎為Innodb
        dialect: org.hibernate.dialect.MySQL5InnoDBDialect
        hbm2ddl:
          # create: 每次加載 hibernate 時都會刪除上一次的生成的表,
          # 然后根據(jù)你的 model 類再重新來生成新表,哪怕兩次沒有任何改變也要這樣執(zhí)行,
          # 這就是導(dǎo)致數(shù)據(jù)庫表數(shù)據(jù)丟失的一個重要原因。
          # create-drop :每次加載 hibernate 時根據(jù) model 類生成表,但是 sessionFactory 一關(guān)閉,表就自動刪除。
          # update:最常用的屬性,第一次加載 hibernate 時根據(jù) model 類會自動建立起表的結(jié)構(gòu)(前提是先建立好數(shù)據(jù)庫),以后加載 hibernate 時根據(jù) model 類自動更新表結(jié)構(gòu),即使表結(jié)構(gòu)改變了但表中的行仍然存在不會刪除以前的行。要注意的是當(dāng)部署到服務(wù)器后,表結(jié)構(gòu)是不會被馬上建立起來的,是要等 應(yīng)用第一次運行起來后才會。
          # validate :每次加載 hibernate 時,驗證創(chuàng)建數(shù)據(jù)庫表結(jié)構(gòu),只會和數(shù)據(jù)庫中的表進行比較,不會創(chuàng)建新表,但是會插入新值。
          auto: update

二、注冊datasource到spring容器

@Configuration
public class DataSourceConfig {
    @Bean(name = "primaryDataSource")
    @Primary
    @Qualifier("primaryDataSource")
    @ConfigurationProperties(prefix = "spring.datasource.test1")
    public DataSource primaryDataSource() {
        System.out.println("-------------------- primaryDataSource初始化 ---------------------");
        return DataSourceBuilder.create().build();
    }

    @Bean(name = "secondaryDataSource")
    @Qualifier("secondaryDataSource")
    @ConfigurationProperties(prefix = "spring.datasource.test2")
    public DataSource secondaryDataSource() {
        System.out.println("-------------------- secondaryDataSource初始化---------------------");
        return DataSourceBuilder.create().build();
    }
}

三、注冊jpa相關(guān)對象進入spring容器

數(shù)據(jù)源1:

@Configuration
@EnableTransactionManagement
@EnableJpaRepositories(
        entityManagerFactoryRef="entityManagerFactoryPrimary",
        transactionManagerRef="transactionManagerPrimary",
        basePackages= { "com.czcstudy.springbootdemo.day1.dao.test1" }) //設(shè)置Repository所在位置
public class RepositoryPrimaryConfig {
    @Autowired
    @Qualifier("primaryDataSource")
    private DataSource primaryDataSource;
    @Autowired
    private JpaProperties jpaProperties;
    @Autowired
    private HibernateProperties hibernateProperties;

    @Primary
    @Bean(name = "entityManagerFactoryPrimary")
    public LocalContainerEntityManagerFactoryBean entityManagerFactoryPrimary(
            EntityManagerFactoryBuilder builder) {
		//網(wǎng)上文章大多數(shù)都是jpaProperties.getHibernateProperties(dataSource);就直接得到了hibernate的配置map,
		//但這個方法在springboot2.0+好像就舍棄了,所以這里改成這樣。
        Map<String, Object> properties = hibernateProperties.determineHibernateProperties(
                jpaProperties.getProperties(), new HibernateSettings());
        return builder.dataSource(primaryDataSource).properties(properties)
                .packages("com.czcstudy.springbootdemo.day1.bean.po").build();//實體包路徑
    }

    @Primary
    @Bean(name = "transactionManagerPrimary")
    public PlatformTransactionManager transactionManagerPrimary(EntityManagerFactoryBuilder builder) {
        return new JpaTransactionManager(entityManagerFactoryPrimary(builder).getObject());
    }

數(shù)據(jù)源2:

@Configuration
@EnableTransactionManagement
@EnableJpaRepositories(
        entityManagerFactoryRef="entityManagerFactorySecondary",
        transactionManagerRef="transactionManagerSecondary",
        basePackages= { "com.czcstudy.springbootdemo.day1.dao.test2" }) //設(shè)置Repository所在位置
public class RepositorySecondaryConfig {
    @Autowired
    @Qualifier("secondaryDataSource")
    private DataSource secondaryDataSource;
    @Autowired
    private JpaProperties jpaProperties;
    @Autowired
    private HibernateProperties hibernateProperties;

    @Bean(name = "entityManagerFactorySecondary")
    public LocalContainerEntityManagerFactoryBean entityManagerFactorySecondary(
            EntityManagerFactoryBuilder builder) {
		//網(wǎng)上文章大多數(shù)都是jpaProperties.getHibernateProperties(dataSource);就直接得到了hibernate的配置map,
		//但這個方法在springboot2.0+好像就舍棄了,所以這里改成這樣。
        Map<String, Object> properties = hibernateProperties.determineHibernateProperties(
                jpaProperties.getProperties(), new HibernateSettings());
        return builder.dataSource(secondaryDataSource).properties(properties)
                .packages("com.czcstudy.springbootdemo.day1.bean.po").build();//實體的包路徑
    }

    @Bean(name = "transactionManagerSecondary")
    public PlatformTransactionManager transactionManagerPrimary(EntityManagerFactoryBuilder builder) {
        return new JpaTransactionManager(entityManagerFactorySecondary(builder).getObject());
    }
}

四、使用spring事務(wù)例

@Service
public class JpaTestServiceImpl implements JpaTestService {
    @Autowired
    private UserJpaTest2Dao userRepository2;

    @Override
    @Transactional(value = "transactionManagerSecondary",rollbackFor = RuntimeException.class)
    public void test(){
        List<UserJpaTest> userJpaTestList  = userRepository2.findAll();
        System.out.println(userJpaTestList);
    }
}

其中指定的value就是前面注冊的PlatformTransactionManager對象名稱,多數(shù)據(jù)源時需要指定。

五、小結(jié)

以上就是springboot2.1.5 配置jpa多數(shù)據(jù)源的方法,啟動項目我們可以看到

Springboot 2.1.5 配置JPA多數(shù)據(jù)源的方法

HikariPool連接池已經(jīng)啟動了,這是springboot的默認(rèn)數(shù)據(jù)庫連接池,所以連接池我們這里就不自己配了。

到此,關(guān)于“Springboot 2.1.5 配置JPA多數(shù)據(jù)源的方法”的學(xué)習(xí)就結(jié)束了,希望能夠解決大家的疑惑。理論與實踐的搭配能更好的幫助大家學(xué)習(xí),快去試試吧!若想繼續(xù)學(xué)習(xí)更多相關(guān)知識,請繼續(xù)關(guān)注創(chuàng)新互聯(lián)網(wǎng)站,小編會繼續(xù)努力為大家?guī)砀鄬嵱玫奈恼拢?/p>

文章題目:Springboot2.1.5配置JPA多數(shù)據(jù)源的方法
當(dāng)前網(wǎng)址:http://m.2m8n56k.cn/article16/jdscgg.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供網(wǎng)站制作企業(yè)建站動態(tài)網(wǎng)站標(biāo)簽優(yōu)化Google響應(yīng)式網(wǎng)站

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)

小程序開發(fā)
主站蜘蛛池模板: 人人爽人人香蕉 | 日本三级网站在线线观看 | 国产在线观看成人免费视频 | 亚洲一区二区三区精品国产 | 国产一级做a爰片久久毛片99 | 精品久久一区二区三区 | 精品动漫一区二区 | 波多野结衣视频免费 | 欧美一区二区视频在线观看 | 九九九热视频 | 老人久久www免费人成看片 | 免费观看呢日本天堂视频 | 久久中文字幕久久久久 | 欧美三级三级三级爽爽爽 | 久久生活片 | 国产成人a视频在线观看 | 亚洲国产老鸭窝一区二区三区 | 亚洲第一成人在线 | 福利三区| 特级a级毛片 | 91免费国产高清观看 | 521a久久九九久久精品 | 性欧美精品 | 欧美三级欧美一级 | 欧美成人免费观看的 | 久久久久久久久久久福利观看 | 久久久久久久久久毛片精品美女 | 精品久久久久国产 | 欧美日韩一二区 | 99久热在线精品视频播放6 | 免费观看女人一摸全是水 | 三级网站视频在线观看 | 亚洲午夜一区二区三区 | 初爱视频教程在线观看高清 | 成人免费一级毛片在线播放视频 | 三级视频在线 | 欧美成人性性 | 福利国产视频 | 自拍视频在线观看 | 久久一日本道色综合久久 | 亚洲 欧美 激情 另类 校园 |