PostgreSQL
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> PostgreSQL

Spring Boot - Cùng một kho lưu trữ và cùng một thực thể cho các cơ sở dữ liệu khác nhau

Tạo 2 tệp cấu hình với nguồn dữ liệu khác nhau và 2 tệp cấu hình này sẽ có thông số kỹ thuật khác nhau cho 2 lớp kho lưu trữ jpa khác nhau. Nhưng có thể có cùng một lớp miền.

step1> Trong tệp thuộc tính của bạn có 2 chi tiết nguồn dữ liệu.

spring.datasource.url=jdbc:postgresql://localhost:5432/DB2017_test
spring.datasource.username=xxx
spring.datasource.password=xxx


# DB2018 DB - ""
spring.datasource2.url=jdbc:postgresql://localhost:5432/DB2018_test
spring.datasource2.username=xxx
spring.datasource2.password=xxx

step2> Sau đó, tạo tệp cấu hình cho dataSource đầu tiên

package com.package1;

@Configuration
@EnableTransactionManagement
@EnableJpaRepositories(
  entityManagerFactoryRef = "entityManagerFactory",
  basePackages = { "com.package1.repo" } 
)
public class DB2017Config {

  @Primary
  @Bean(name = "dataSource")
  @ConfigurationProperties(prefix = "spring.datasource")
  public DataSource dataSource() {
    return DataSourceBuilder.create().build();
  }

  @Primary
  @Bean(name = "entityManagerFactory")
  public LocalContainerEntityManagerFactoryBean 
  entityManagerFactory(
    EntityManagerFactoryBuilder builder,
    @Qualifier("dataSource") DataSource dataSource
  ) {
    return builder
      .dataSource(dataSource)
      .packages("com.domain")
      .persistenceUnit("foo")
      .build();
  }

  @Primary
  @Bean(name = "transactionManager")
  public PlatformTransactionManager transactionManager(
    @Qualifier("entityManagerFactory") EntityManagerFactory 
    entityManagerFactory
  ) {
    return new JpaTransactionManager(entityManagerFactory);
  }
}

step3> Tương tự, tạo một tệp cấu hình khác cho dataSource khác,

@EnableJpaRepositories(
  entityManagerFactoryRef = "entityManagerFactory",
  basePackages = { "com.package2.repo" }

Và thay đổi tiền tố

@ConfigurationProperties(prefix = "spring.datasource2")

Bây giờ bạn sẽ có 2 RequestRepository1 và RequestRepository2 tương tự trong package1 và package2 tương ứng như đã đề cập ở trên (basePackages ={"com.package1.repo"}).

step4> Tất cả đặt autowire 2 repo khác nhau.

@Autowired
private final RequestRepository1  repo1;
@Autowired
private final RequestRepository2  repo2;

Sau đó, hãy sử dụng chúng.

List<Request> listAdesioni = repo1.findByCodiceFiscale(codicefiscale);
List<Request> listAdesioni = repo2.findByCodiceFiscale(codicefiscale);



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Postgres - câu lệnh cập nhật như một trình kích hoạt

  2. Trong PostgreSQL, làm thế nào để chèn dữ liệu bằng lệnh COPY?

  3. Postgresql -bash:psql:lệnh không tìm thấy

  4. Postgresql 9.x:Chỉ mục để tối ưu hóa các truy vấn `xpath_exists` (XMLEXISTS)

  5. Cách make_timestamptz () hoạt động trong PostgreSQL