连接maven和liquibase与休眠?

时间:2016-05-01 21:39:45

标签: hibernate maven liquibase

我有一个基于Maven的项目,它使用Hibernate和Postgres(No Spring)。

我想使用Liquibase进行数据库迁移。理想情况下,我喜欢以下工作流程:

  1. 我创建了初始"变更集" (mvn liquibase:generateChangeLog?),它应该初始化数据库。

  2. 我使用适当的注释添加实体类。我生成了一个"差异" changeset(mvn liquibase:diff?)并将其检入存储库。

  3. 现在团队中的每个人都从存储库中取出并运行一些东西(mvn update?)来更新他们的数据库副本。

  4. 我根据需要重复前两个步骤。 我知道Liquibase应该支持这种开发工作流程。麻烦的是,有许多活动部件,我在努力将事物连接在一起

  5. 例如,如何在Maven中配置Liquibase?在liquibase.properties?如何指定存储更改集的位置?如何创建初始"变更集"?我理解变更集可以采用不同的格式,(XML,JSON等)有哪些优点和缺点,它们可以简单地在SQL中吗?

1 个答案:

答案 0 :(得分:0)

liquibase有一个maven插件,可以通过基于maven的解决方案完成。

http://www.liquibase.org/documentation/maven/generated/update-mojo.html

然后您可以使用目标liquibase运行您的maven构建:更新

例如,如果要连接到mysql DB(liquibase支持许多不同的数据库)

    <dependencies>
        <dependency>
            <groupId>mysql</groupId>
            <artifactId>mysql-connector-java</artifactId>
            <version>5.1.6</version>
        </dependency>
    </dependencies>





<build>
    <plugins>
        <plugin>
            <groupId>org.liquibase</groupId>
            <artifactId>liquibase-maven-plugin</artifactId>
            <version>3.4.1</version>
            <configuration>
                <promptOnNonLocalDatabase>false</promptOnNonLocalDatabase>
                <changeLogFile>${changelog}</changeLogFile>
                <driver>com.mysql.jdbc.Driver</driver>
                <url>jdbc:mysql://${mysql.host}:${mysql.port}/${mysql.schema}</url>
                <username>${mysql.username}</username>
                <password>${mysql.password}</password>
            </configuration>
        </plugin>
    </plugins>
</build>

我们也可以与hibernate集成,github中有一个项目请查看他们通过hibernate做的文档。

https://github.com/liquibase/liquibase-hibernate/releases

希望这能回答你的问题

编辑:

liquibase --driver=oracle.jdbc.OracleDriver \
      --classpath=\path\to\classes:jdbcdriver.jar \
      --changeLogFile=com/example/db.changelog.xml \
      --url="jdbc:oracle:thin:@localhost:1521:XE" \
      --username=scott \
      --password=tiger \
      generateChangeLog

这将生成现有数据库的更改日志。

参考 - http://www.liquibase.org/documentation/generating_changelogs.html

参考 - http://bytefilia.com/managing-database-schema-changes-liquibase-existing-schema/

请注意,此命令目前有一些限制。它不会导出以下类型的对象: 存储过程,函数,包 触发器