# Migrax documentation Migrax generates SQL migrations from JPA/Hibernate entities and applies them, with locking, checksums, rollback scripts, linting and verification. It runs as a command line tool, a Maven or Gradle plugin, a container image, and at startup in Spring Boot, Quarkus, Micronaut and Helidon, on PostgreSQL, CockroachDB, MySQL, MariaDB, SQL Server, Oracle, H2 and SQLite. --- Source: https://migrax.org/ See it in 30 seconds Add a field to an entity, and Migrax writes the SQL. ```java title="Customer.java" hl_lines="9" @Entity @Table(name = "customers") public class Customer { @Id @GeneratedValue(strategy = GenerationType.IDENTITY) public Long id; public String email; public String phone; // new } ``` ```sql title="0002_add_customers_phone.sql" -- Generated by Migrax 0.4.0 for postgresql ALTER TABLE customers ADD COLUMN phone varchar(255); ``` The migration is plain SQL you can read, review and commit, with a rollback script next to it. Nothing is hidden: you can edit every statement before it runs. { .mx-centered .mx-reveal } Why teams use Migrax Everything a migration needs, checked before it reaches production. - :material-auto-fix:{ .lg .middle } __Migrations written for you__ --- Change an entity, run `migrax generate`. Tables, columns, keys, indexes, join tables, element collections, sequences and inheritance come out exactly as Hibernate maps them. - :material-shield-check:{ .lg .middle } __Checked before production__ --- Every migration is linted for statements that lock big tables, fail on existing rows or break running instances. `migrax verify` has your Hibernate version validate the result. - :material-undo-variant:{ .lg .middle } __Rollback included__ --- Each generated migration comes with a rollback script, and `verify` proves it works by rolling everything back and forward again. - :material-account-question:{ .lg .middle } __Asks before it loses data__ --- A dropped column that looks renamed? Migrax asks, and renames it so the data stays. Drops only happen when you say `--allow-destructive`. - :material-radar:{ .lg .middle } __Catches manual changes__ --- `migrax drift` compares the live database with what your migrations produce and lists every difference, including columns someone made narrower. - :material-cog-outline:{ .lg .middle } __Zero setup__ --- Run it in your service folder. It compiles the project, finds the dependencies and reads the database settings from your application configuration. Works with your stack Detected automatically. No plugin configuration needed to get started. Frameworks Spring Boot Quarkus Micronaut 4 and 5 Helidon 4 Jakarta EE Plain Hibernate Hibernate 5.4 to 7.4, each version reading its own mapping Databases PostgreSQL CockroachDB MySQL 8 MariaDB SQL Server Oracle 12c+ H2 SQLite Run it from Command line Maven plugin Gradle plugin Application startup ## Ready when your next entity changes Install the command line tool in a minute, then run it in any service folder. [Install Migrax :material-arrow-right:](getting-started/installation.md){ .md-button .md-button--primary } [Read how it works](guides/how-it-works.md){ .md-button } --- Source: https://migrax.org/download/ # Download Migrax needs **Java 17 or newer**. Download the command line tool below, then run its installer as described in [Installation](getting-started/installation.md). ## Migrax 0.4.0 Latest release, published 2026-10-11. [:material-download: Download migrax-0.4.0.zip](downloads/0.4.0/migrax-0.4.0.zip){ .md-button .md-button--primary } Then follow [Installation](getting-started/installation.md).