Multi Tenancy usually plays an important role in the business case for SAAS solutions. Spring Data and Hibernate provide out-of-the-box support for different Multi-tenancy strategies. Configuration however becomes more complicated, and the available examples are few.
This project complements my blog series on Multi Tenancy (see https://callistaenterprise.se/blogg/teknik/2020/09/19/multi-tenancy-with-spring-boot-part1/), and contains working examples of different Multi Tenant strategies implemented with Spring Boot, Hibemate and Liquibase, complete with support for database migrations as well as dynamically set up new tenants on the fly.
The master branch contains a common, minimal example project skeleton. The different Multi-tenancy strategy examples are in separate branches.
The database
branch implements the Database per tenant strategy.
The schema
branch implements the Schema per tenant strategy.
The shared_database_hibernate
branch implements the Shared Database with Discriminator
strategy, using Hibernate's experimental support for discriminator-based multi-tenancy
(see e.g. https://hibernate.atlassian.net/browse/HHH-6054)
The shared_database_postgres_rls
branch implements the Shared Database with Discriminator
strategy, using PostgreSQL's Row Level Security.
All the examples require a postgres database running at localhost:5432. Run the following command
to use the provided docker-compose.yml
configuration to start a dockerized postgres
container:
docker-compose up -d
Close it down with the following command when done, or if you need to recreate the database:
docker-compose down