Sunday, December 18, 2016

Upgrading DB schema in Spring Boot projects

In this article we saw how to upgrade the DB schema in Spring Boot projects using the spring.jpa properties:
  • spring.jpa.generate-ddl
  • spring.jpa.hibernate.ddl-auto
There is, however, a far more powerful way to do the same upgrade. That is by using Liquibase.
  • Add org.liquibase:liquibase-core to your classpath.
  • Create a new changelog file (json):
 {
  "databaseChangeLog": [
    {
      "changeSet": {
        "id": "1",
        "author": "AUTHOR_NAME",
        "changes": [
          {
            "addColumn": {
              "columns": [
                {
                  "column": {
                    "name": "EMAIL",
                    "type": "VARCHAR(255)",
                    "defaultValue": email@email.com,
                    "constraints": {
                      "nullable": false
                    }
                  }
                }
              ],
              "schemaName": "MY_SHEMA_NAME",
              "tableName": "MY_TABLE_NAME"
            }
          }
        ]
      }
    }
  ]
}

  • Run liquibase update (this will run automatically when you start your Spring Boot project (make sure you set the changelog's path correctly in application.properties (liquibase.change-log=classpath:db/changelog/db.changelog-master.json))
That was all. Schema upgraded. You may wish to run updateSQL first, to output the upgrade SQL in a file so that it can be inspected before applying it in the database.

Read more in the official Liquibase site.

No comments:

Post a Comment