数据库更新

JHipster使用Liquibase管理数据库的变更迭代,并存储在/src/main/resources/config/liquibase/目录,有三种方式通过liquibase更新数据库,使用entity sub-generator,使用Maven 全局命令 mvn liquibase:diff ,或者手动更新配置文件

使用entity sub-generator 更新数据库

开发流程如下

  • 运行entity sub-generator

  • 自动创建 changelog 到 src/main/resources/config/liquibase/changelog目录中,并且自动添加到src/main/resources/config/liquibase/master.xml文件中

使用Maven liquibase:diff更新数据库

按照 官方文档说, Liquibase Hibernate 在pom.xml和spring的application.yml都有配,如果要变更,需要同时修改这两处文件

开发流程如下

  • 修改jpa实体(增删字段,修改关联关系等)

  • 编译程序

  • 运行 mvnw liquibase:diff

  • 生成变更日志在 src/main/resources/config/liquibase/changelog 目录

  • 查看变更日志,删除多余更新内容,保留必要更新,重命名文件为有意义文件名,比如20161012021042_modify_name_length.xml,并添加到 src/main/resources/config/liquibase/master.xml 重启生效

    <include file="classpath:config/liquibase/changelog/20161012021042_modify_name_length.xml" relativeToChangelogFile="false"/>
    

使用Gradle更新数据库

基本等同Maven的步骤,只不过换成 gradlew liquibaseDiffChangelog

手动编辑 changelog 更新数据库

开发流程如下

  • 修改jpa实体

  • 创建 changelog文件到 src/main/resources/config/liquibase/changelog 命名格式为yyyMMddHHmmss_描述.xml,例如20161012021042_added_create_by_and_last_modified_by.xml

  • 添加 changelog 到 src/main/resources/config/liquibase/master.xml中,重启生效

changelog demo 如下,具体可以百度搜liquibase相关教程,或者liquibase官网

修改数据类型,长度

新增列

<?xml version="1.0" encoding="UTF-8"?>

<databaseChangeLog xmlns="http://www.liquibase.org/xml/ns/dbchangelog"

                   xmlns:ext="http://www.liquibase.org/xml/ns/dbchangelog-ext"

                   xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"

                   xsi:schemaLocation="http://www.liquibase.org/xml/ns/dbchangelog-ext http://www.liquibase.org/xml/ns/dbchangelog/dbchangelog-ext.xsd http://www.liquibase.org/xml/ns/dbchangelog http://www.liquibase.org/xml/ns/dbchangelog/dbchangelog-3.4.xsd">

   <changeSet author="AnJia (generated)" id="1476238247449-1">

      <addColumn tableName="department">

         <column name="created_by" type="varchar(50)">

            <constraints nullable="false"/>

         </column>

      </addColumn>

   </changeSet>

   <changeSet author="AnJia (generated)" id="1476238247449-2">

      <addColumn tableName="department">

         <column name="created_date" type="timestamp">

            <constraints nullable="false"/>

         </column>

      </addColumn>

   </changeSet>

   <changeSet author="AnJia (generated)" id="1476238247449-3">

      <addColumn tableName="department">

         <column name="last_modified_by" type="varchar(50)"/>

      </addColumn>

   </changeSet>

   <changeSet author="AnJia (generated)" id="1476238247449-4">

      <addColumn tableName="department">

         <column name="last_modified_date" type="timestamp"/>

      </addColumn>

   </changeSet>

   <changeSet author="AnJia (generated)" id="1476238247449-5">

      <dropDefaultValue columnDataType="timestamp"

                        columnName="release_time"

                        tableName="department"/>

   </changeSet>

</databaseChangeLog>

results matching ""

    No results matching ""