Class MigrationUtils


  • public class MigrationUtils
    extends Object
    This Utility class offers utility methods which may be of use to perform common Java database migration task(s) (via Flyway).

    NOTE: This class specifically CANNOT utilize Hibernate, because it is used for database migrations which take place PRIOR to Hibernate loading. However, as you'll see below, all methods are protected to ensure the rest of the API cannot bypass Hibernate.

    Author:
    Tim Donohue
    • Method Detail

      • dropDBConstraint

        protected static Integer dropDBConstraint​(Connection connection,
                                                  String tableName,
                                                  String columnName,
                                                  String constraintSuffix)
                                           throws SQLException
        Drop a given Database Constraint (based on the current database type). Returns a "checksum" for this migration which can be used as part of a Flyway Java migration
        Parameters:
        connection - the current Database connection
        tableName - the name of the table the constraint applies to
        columnName - the name of the column the constraint applies to
        constraintSuffix - Only used for PostgreSQL, whose constraint naming convention depends on a suffix (key, fkey, etc)
        Returns:
        migration checksum as an Integer
        Throws:
        SQLException - if a database error occurs
      • dropDBTable

        protected static Integer dropDBTable​(Connection connection,
                                             String tableName)
                                      throws SQLException
        Drop a given Database Table (based on the current database type). Returns a "checksum" for this migration which can be used as part of a Flyway Java migration

        NOTE: Ideally, if you need to do a DROP TABLE, you should just create a Flyway SQL migration. This method should ONLY be used if the table name needs to be dynamically determined via Java.

        Parameters:
        connection - the current Database connection
        tableName - the name of the table to drop
        Returns:
        migration checksum as an Integer
        Throws:
        SQLException - if a database error occurs
      • dropDBSequence

        protected static Integer dropDBSequence​(Connection connection,
                                                String sequenceName)
                                         throws SQLException
        Drop a given Database Sequence (based on the current database type). Returns a "checksum" for this migration which can be used as part of a Flyway Java migration

        NOTE: Ideally, if you need to do a DROP SEQUENCE, you should just create a Flyway SQL migration. This method should ONLY be used if the sequence name needs to be dynamically determined via Java.

        Parameters:
        connection - the current Database connection
        sequenceName - the name of the sequence to drop
        Returns:
        migration checksum as an Integer
        Throws:
        SQLException - if a database error occurs
      • dropDBView

        protected static Integer dropDBView​(Connection connection,
                                            String viewName)
                                     throws SQLException
        Drop a given Database View (based on the current database type). Returns a "checksum" for this migration which can be used as part of a Flyway Java migration

        NOTE: Ideally, if you need to do a DROP VIEW, you should just create a Flyway SQL migration. This method should ONLY be used if the view name needs to be dynamically determined via Java.

        Parameters:
        connection - the current Database connection
        viewName - the name of the view to drop
        Returns:
        migration checksum as an Integer
        Throws:
        SQLException - if a database error occurs