Kết nối nhiều cơ sở dữ liệu bằng Hibernate

Tram Ho

I. Giới thiệu

Trong bài viết này mình sẽ hướng dẫn config project Spring boot connect multiple database sử dụng hibernate, cụ thể ở đây mình có 2 database là PostgreSQL và MySQL.

Ở đây mình mình sẽ sử dụng kotlin.

II. Implement:

1. Maven dependencies:

Thực hiện import các dependencies cần thiết vào project:

Tiếp theo để sử dụng cả Porstgresql và MySQL:

2. Config Propertiese:

Config trong file application.properties, ở đây mình connect đến 2 database là MySQL và PostgreSQL

3. Config data source

Bây giờ là bước config data source trong Spring, ở đây mình define 2 package repository và 2 package entity tương ứng với MySQL và PostgreSQL để jpa repository trỏ vào

Mysql:

Tạo 1 file config cho MySQL MySQLConfig.kt, ở đây mình sẽ custom lại entityManagerFactoryReftransactionManagerRef:

Postgresql:

Tương tự config cho postgresql, tạo file PostgresqlConfig.kt:

Initializer

Trong trường hợp muốn config khi load entity xong thì hibernate tự động run script sql thì config thêm phần Initializer như bên dưới:

4. Create entity package

Ví dụ ở đây mình có 1 table users_mysql trong database mysql, và mình muốn load toàn bộ dữ liệu ở mysql sang table user_postgresql trong database postgresql

Như config ở trên, giờ mình tạo entity cho mysql (package com.example.multidatabase.entity.mysql) và postgresql (package com.example.multidatabase.entity.postgresql) :

UsersMySQLEntity.kt:

PostgreSQLEntity.kt:

5. Create repository package:

OK, đã có entity, giờ mình sẽ tạo repository tương ứng mysql (package com.example.multidatabase.repository.mysql), postgresql (package com.example.multidatabase.repository.postgresql):

UsersMySQLRepository.kt:

UsersPostgreSQLRepository.kt:

6. Execute:

OK, bây giờ define 1 component để cứ 30s 1 lần insert user vào MySQL và PostgreSQL:

7. Result:

Log cho phần start spring boot thành công :

Log save user vào database:

Cùng check kết quả ở database nào:

Table users_postgresql:

Table users_mysql:

III. Sumary:

Như vậy, việc connect tới nhiều database bằng Spring boot và hibernate có vẻ khá đơn giản phải ko.

Github: https://github.com/hoangntv-1399/multipledatabase

Chia sẻ bài viết ngay

Nguồn bài viết : Viblo