¿Cómo configurar una fuente de datos dual en Spring Boot?

fondo

En muchas aplicaciones, puede encontrar situaciones en las que necesite conectarse a varias bases de datos . Estas bases de datos pueden ser de diferentes tipos, como bases de datos relacionales y NoSQL, o pueden ser del mismo tipo pero contener datos diferentes. Para manejar esta situación, podemos usar fuentes de datos duales para administrar múltiples conexiones de bases de datos.

Las fuentes de datos duales se refieren al uso de dos o más conexiones de bases de datos diferentes en una aplicación al mismo tiempo, que pueden ser diferentes tipos de bases de datos, o del mismo tipo pero con datos diferentes. El uso de fuentes de datos duales facilita la administración de múltiples bases de datos y el uso de la fuente de datos adecuada para las operaciones de lectura y escritura cuando sea necesario. Por ejemplo, una aplicación puede necesitar conectar una base de datos relacional y una base de datos NoSQL para almacenar diferentes tipos de datos. Al configurar fuentes de datos duales, la aplicación puede conectarse y operar las dos bases de datos al mismo tiempo.

Entonces, ¿cómo configurar y usar una fuente de datos dual en una aplicación Spring Boot? Primero, entenderemos qué es una fuente de datos dual y por qué es necesaria. Luego, detallaremos cómo configurar e implementar fuentes de datos duales en Spring Boot.

Ventajas de las fuentes de datos duales

Los beneficios de usar fuentes de datos duales son los siguientes:

  1. Flexibilidad y escalabilidad : las fuentes de datos duales permiten que las aplicaciones se conecten a múltiples bases de datos, y las fuentes de datos se pueden cambiar fácilmente según las necesidades reales. Esto proporciona una mayor flexibilidad y escalabilidad para adaptarse a los cambios en los diferentes requisitos de almacenamiento de datos.
  2. Separación de la lógica comercial: al almacenar diferentes tipos de datos en diferentes fuentes de datos, la lógica comercial se puede separar y administrar mejor. Por ejemplo, almacenar datos relacionales en una fuente de datos y registros o archivos en otra fuente de datos hace que la lógica comercial sea más clara y fácil de mantener.
  3. Rendimiento y equilibrio de carga : el uso de fuentes de datos duales puede lograr la separación de lectura y escritura y el equilibrio de carga. Por ejemplo, enrutar las operaciones de lectura a un origen de datos y las operaciones de escritura a otro origen de datos mejora el rendimiento de las operaciones de la base de datos.
  4. Aislamiento y seguridad de datos : mediante el uso de fuentes de datos duales, los datos confidenciales y los datos no confidenciales se pueden almacenar en diferentes fuentes de datos para lograr el aislamiento y la seguridad de los datos. Esto protege mejor los datos confidenciales y reduce el riesgo de filtraciones de datos.
  5. Independencia de la plataforma : la configuración y el uso de fuentes de datos duales suelen ser independientes de los marcos y plataformas específicos. Esto significa que puede usar la misma configuración de fuente de datos dual en diferentes aplicaciones y entornos sin modificar ni reescribir el código.

tecnología

La configuración de fuentes de datos duales en una aplicación Spring Boot puede usar las siguientes técnicas:

  1. Spring Boot : un marco para crear aplicaciones Spring independientes de nivel de producción.
  2. API de persistencia de Java (JPA) : parte de la especificación Java EE para la persistencia de datos a través del mapeo entre objetos y bases de datos relacionales.
  3. HikariCP : un grupo de conexiones JDBC de alto rendimiento.

uso

agregar dependencias

pom.xmlPrimero, agregue las dependencias necesarias en los archivos de su proyecto Spring Boot . Estas dependencias incluyen Spring Boot Starter Data JPAy HikariCPel controlador de base de datos de su elección.

<dependencies>
  <!-- Spring Boot Starter Data JPA -->
  <dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-data-jpa</artifactId>
  </dependency>

  <!-- HikariCP -->
  <dependency>
    <groupId>com.zaxxer</groupId>
    <artifactId>HikariCP</artifactId>
  </dependency>

  <!-- MySQL驱动程序 -->
  <dependency>
    <groupId>mysql</groupId>
    <artifactId>mysql-connector-java</artifactId>
  </dependency>

  <!-- 可选:其他数据库驱动程序 -->
</dependencies>

Configurar origen de datos

application.propertiesConfigure la información de conexión de la fuente de datos dual en el archivo (o application.yml) . El siguiente ejemplo muestra cómo configurar dos fuentes de datos MySQL:

# 数据源1
spring.datasource.url=jdbc:mysql://localhost:3306/db1
spring.datasource.username=root
spring.datasource.password=123456
spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver

# 数据源2
datasource2.url=jdbc:mysql://localhost:3306/db2
datasource2.username=root
datasource2.password=123456
datasource2.driver-class-name=com.mysql.cj.jdbc.Driver

Crear clase de entidad y repositorio

Cree clases de entidad e interfaces de repositorio correspondientes a cada fuente de datos. Cada clase de entidad e interfaz de repositorio debe anotarse con una fuente de datos diferente.

// 实体类1
@Entity
@Table(name = "table1", schema = "db1")
public class Entity1 {
    
    
  // 实体类定义...
}

// 存储库接口1
@Repository
public interface Repository1 extends JpaRepository<Entity1, Long> {
    
    
  // 存储库方法定义...
}

// 实体类2
@Entity
@Table(name = "table2", schema = "db2")
public class Entity2 {
    
    
  // 实体类定义...
}

// 存储库接口2
@Repository
public interface Repository2 extends JpaRepository<Entity2, Long> {
    
    
  // 存储库方法定义...
}

Configurar orígenes de datos y administradores de entidades

Necesitamos crear dos clases de configuración, una para cada fuente de datos y administrador de entidades.

@Configuration
@EnableJpaRepositories(
    basePackages = "com.example.repository1",
    entityManagerFactoryRef = "entityManagerFactory1",
    transactionManagerRef = "transactionManager1"
)
public class DataSource1Config {
    
    
  // 数据源1的配置...
}

@Configuration
@EnableJpaRepositories(
    basePackages = "com.example.repository2",
    entityManagerFactoryRef = "entityManagerFactory2",
    transactionManagerRef = "transactionManager2"
)
public class DataSource2Config {
    
    
  // 数据源2的配置...
}

Configurar el administrador de transacciones

Finalmente, también necesitamos configurar un administrador maestro de transacciones para administrar las transacciones de todas las fuentes de datos.

@Configuration
@EnableTransactionManagement
public class TransactionManagementConfig {
    
    
  @Bean
  public PlatformTransactionManager transactionManager(
      EntityManagerFactory entityManagerFactory1,
      EntityManagerFactory entityManagerFactory2
  ) {
    
    
    JpaTransactionManager jpaTransactionManager = new JpaTransactionManager();
    jpaTransactionManager.setEntityManagerFactory(entityManagerFactory1);
    jpaTransactionManager.setEntityManagerFactory(entityManagerFactory2);
    return jpaTransactionManager;
  }
}

Implementar fuentes de datos duales

Integre todas las configuraciones anteriores en la aplicación principal. Cree una @SpringBootApplicationclase principal con anotaciones y agregue clases de configuración para las dos fuentes de datos y el administrador de transacciones en ella.

@SpringBootApplication
@Import({
    
     DataSource1Config.class, DataSource2Config.class, TransactionManagementConfig.class })
public class DualDataSourceApplication {
    
    
  public static void main(String[] args) {
    
    
    SpringApplication.run(DualDataSourceApplication.class);
  }
}

Pasos para configurar una fuente de datos dual en una aplicación Spring Boot. Primero, configuramos el proyecto agregando las dependencias requeridas. Luego configuramos la información de conexión para cada fuente de datos y creamos clases de entidad e interfaces de repositorio. A continuación, creamos clases de configuración para la fuente de datos y el administrador de entidades, y configuramos un administrador de transacciones principal. Finalmente, consolidamos todas las configuraciones en la aplicación principal.

Supongo que te gusta

Origin blog.csdn.net/weixin_44427181/article/details/131987562
Recomendado
Clasificación