java - 使用 Hibernate/Spring 生成数据库更新脚本

标签 java spring hibernate jpa liquibase

我有一个项目,我们曾经依靠 hibernate 来更新数据库的更改(hibernate.hbm2ddl.auto=update)......即使在产品上...... 我正在迁移它以使用 liquibase。

我唯一担心的是,不是每个人都是我团队中的 sql 专家,所以我正在寻找一种简单的方法来生成 hibernate 在更新数据库时会完成的 sql 脚本。

我们都在使用 Intellij IDEA,但找不到这个功能。

你知道有什么工具可以做到这一点吗?

谢谢

最佳答案

要实际显示 Hibernate 从映射中生成的脚本,您可以:

  • 按照 Andrei I 的建议,将这两行添加到您的 application.properties:

    spring.jpa.hibernate.ddl-auto=validate
    logging.level.org.hibernate.tool.hbm2ddl=DEBUG
    

Hibernate 4.3 的来源:SchemaUpdate.java

  • 或使用以下代码手动生成这些脚本:

    LocalSessionFactoryBuilder sessionFactory = new LocalSessionFactoryBuilder(dataSource);
    sessionFactory.scanPackages("your.package.containing.entities");
    Dialect dialect = new MySQL5Dialect(); // select your dialect
    DatabaseMetadata metadata = new DatabaseMetadata(dataSource.getConnection(), dialect, sessionFactory);
    List<SchemaUpdateScript> scripts = sessionFactory.generateSchemaUpdateScriptList(dialect, metadata);
    
    Formatter formatter = FormatStyle.DDL.getFormatter();
    for (SchemaUpdateScript script : scripts) {
       System.err.println(formatter.format(script.getScript()) + ";");
    }
    

您甚至可以在@Test 中添加此代码,如 here 所述.

祝你好运!

关于java - 使用 Hibernate/Spring 生成数据库更新脚本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19942217/

相关文章:

java - 在后端 Java EE 的表中使用 Angular2 获取一个元素

java - 使用ant发布android包时编译错误

hibernate 力指数

java - JdbcTemplate 抛出 java.sql.SQLException :

java - 错误无法在 JPA 中找到名为 [total_recods] 的参数

java - 这段反射代码有什么错误?

java - 在 ndk 上工作的 c++ midi 库

java - 如何在Spring中更改Messaging Exception的Failed Message

java - 在 Spring 上下文中导入/过滤属性

java - 在 Spring 中更新属性文件中的数据库设置