Showing posts with label Liquibase. Show all posts
Showing posts with label Liquibase. Show all posts

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.