【问题标题】:How do I mimic Hibernate hbm2ddl "create" behaviour in Liquibase?如何在 Liquibase 中模仿 Hibernate hbm2ddl“创建”行为?
【发布时间】:2011-07-31 06:17:48
【问题描述】:

我使用 liquibase 1.9.5 已经有一段时间了,并用它来代替 hibernate hbm2ddl 创建表和加载固定装置的策略。由于它是一个 maven 项目并且因为我使用 hsqldb(使用文件 create=true),所以我只需在目标文件夹中创建 db,以便在我测试应用程序的任何时候都有一个新的数据库。工作正常,直到我意识到:

1我现在使用mysql数据库做集成测试时需要重新创建数据库

2对于非 Maven 项目,我肯定需要相同的解决方案。

那么基本上我如何在使用 liquibase 而不是 hbm2ddl 时删除和创建数据库?

【问题讨论】:

    标签: java maven-2 jakarta-ee hbm2ddl liquibase


    【解决方案1】:

    最简单的方法是在运行 sql 的 liquibase 更新之前添加一个单独的数据库调用

    DROP DATABASE X;
    CREATE DATABASE X
    

    Liquibase 确实有一个 dropAll 命令,可用于删除模式中的所有内容,但它比在 mysql 上删除/创建数据库要慢,并且可能会丢失一些数据库对象。

    【讨论】:

    • 嗨,nathan 感谢您阅读并提供解决方案。顺便说一下,liquibase 可以与 jpa 的 hibernate 实现一起使用,它可以根据我的域模型创建模式吗? (希望这不是太多要求;))
    • 目前没有。 forum.liquibase.org/topic/jpa-persistance-xml 提供了一个尚未集成的补丁,尽管您可以在本地进行更改并查看它是如何工作的。
    猜你喜欢
    • 2011-04-01
    • 2015-11-16
    • 2016-06-06
    • 1970-01-01
    • 2022-11-26
    • 2013-06-28
    • 2013-02-16
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多