Skip to content

miquido/mybatis-read-write-separation

Repository files navigation

mybatis-read-write-separation

GitHub license Tests

This is a Kotlin library providing read/write separation for Spring + MyBatis applications supporting one master db and one slave db.

The database master-slave replication is used to isolate resource modification from reading. It can solve many database bottlenecks by manipulating master table when working with data and querying using the slave table. Read-write separation provides better expansibility, maintainability and usability of the systems.

Setup

  1. Add mybatis-read-write-separation dependency to build.gradle file:
implementation 'com.miquido:mybatis-read-write-separation:1.0'
  1. In main application class annotated with @SpringBootApplication use @Import annotation to cherry-pick configuration classes from mybatis-read-write-separation library:
@Import(ReadWriteDatasourceConfig::class, ReadOnlyInterceptor::class)
  1. Configure application.properties file as below to hold properties of read-write datasources:
spring.datasource.url=url-of-your-master-db
spring.datasource.username=master-db-username
spring.datasource.password=master-db-password
spring.datasource.driver-class-name=master-db-driver
spring.datasource.readonly.url=url-of-your-slave-db
spring.datasource.readonly.username=slave-db-username
spring.datasource.readonly.password=slave-db-password
spring.datasource.readonly.driver-class-name=slave-db-driver
  1. Add @ReadOnly annotation to all functions in service classes where you want to run your queries on slave database, e.g.:
@Service
class UserService {
    
    @Transactional
    @ReadOnly
    override fun selectUserQuery() =
        repository.selectUserQuery()
    
}

About

A Kotlin library providing read/write separation for Spring + MyBatis applications supporting one master db and one slave db. The project was made by Miquido. https://www.miquido.com/

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages