PostgreSQL
 sql >> डेटाबेस >  >> RDS >> PostgreSQL

स्प्रिंग बूट - विभिन्न डेटाबेस के लिए समान भंडार और एक ही इकाई

अलग-अलग डेटा स्रोत के साथ 2 कॉन्फ़िगरेशन फ़ाइलें बनाएं और इन 2 कॉन्फ़िगरेशन फ़ाइलों में 2 अलग-अलग जेपीए रिपोजिटरी क्लास के लिए अलग-अलग विनिर्देश होंगे। लेकिन एक ही डोमेन क्लास हो सकता है।

step1>आपके गुण फ़ाइल में 2 डेटा स्रोत विवरण हैं।

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>फिर पहले डेटा स्रोत के लिए कॉन्फिग फाइल बनाएं

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> सिमिलरी अन्य डेटा सोर्स के लिए एक और कॉन्फिग फाइल बनाएं,

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

और उपसर्ग बदलें

@ConfigurationProperties(prefix = "spring.datasource2")

अब आपके पास ऊपर बताए अनुसार क्रमशः पैकेज1 और पैकेज2 में 2 समान RequestRepository1 और RequestRepository2 होंगे (basePackages ={ "com.package1.repo" })।

step4>ऑल सेट ऑटोवायर 2 अलग रेपो।

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

फिर उनका इस्तेमाल करें।

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. pg_ctl:साझा पुस्तकालयों को लोड करते समय त्रुटि:libpq.so.5

  2. Django ऑब्जेक्ट क्रिएशन और पोस्टग्रेज सीक्वेंस

  3. Postgres psql के लिए टाइमज़ोन कैसे सेट करें?

  4. मैं ऑटोइनक्रिकमेंटिंग प्राथमिक कुंजी के साथ आर से पोस्टग्रेएसक्यूएल टेबल पर डेटा कैसे लिखूं?

  5. Postgresql में डायनामिक अपरर्ट