本文记录用JPA对数据库不同库进行配置 , 进而对不同库进行CRUB , 其中对JPA批量性操作进行优化 , 对不同数据源下事务和多线程操作
1.JPA
1.1 数据源配置
1 | //配置类 |
##1.2 文件配置
1 | spring: |
1.3 数据源A配置
1 | //配置类 |
注意 : springboot2.1.x之后整合JPA配置多数据源时
HibernateSettings hibernateSettings = new HibernateSettings();
jpaProperties.getHibernateProperties(hibernateSettings)报错
(springboot2.1.x之后不再包含此方法)
1.4 加载B数据源
同理设置B数据源
1 |
|
此时的目录结构为
1 | ├─common |
1.5 数据源下的批量优化操作
1 | 1 抽出接口 |
1.6 A库操作中B库异步操作
在A库中 , 假设我们需要进行B库操作 , 这边业务是进行一个迁移业务 , 对此使用的是异步分页迁移 , 而这个过程就会出现如何保证B库事务的一直性 , 解决方案是加入一个countDownLatch来阻塞线程,在此期间如果出现异常的话 ,则进行回滚
1 | public Integer g2HServiceLogic(Date startTime, Date endTime, AtomicInteger count, Integer saveType, String tip) throws Exception { |