用Hibernate / Spring生成数据库更新脚本 [英] Generate a database update scripts with Hibernate/Spring

查看:104
本文介绍了用Hibernate / Spring生成数据库更新脚本的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我有一个项目,我们用它来依赖hibernate来更新数据库(hibernate.hbm2ddl.auto = update)...甚至在产品...
我正在迁移它来使用liquibase。

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



我们都使用Intellij IDEA,但找不到此功能。



你知道任何能够做到这一点的工具吗?

谢谢

解决方案

为了实际显示Hibernate从映射中生成的脚本,您可以:按照Andrei I的建议,将这两个参数添加到


  • 行到您的application.properties:

      spring.jpa.hibernate.ddl-auto =验证
    logging.level。 org.hibernate.tool.hbm2ddl = DEBUG




Hibernat的来源e 4.3: SchemaUpdate.java




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

      LocalSessionFactoryBuilder sessionFactory = new LocalSessionFactoryBuilder(dataSource); 
    sessionFactory.scanPackages(your.package.containing.entities);
    方言dialect = new MySQL5Dialect(); //选择你的方言
    DatabaseMetadata metadata = new DatabaseMetadata(dataSource.getConnection(),dialect,sessionFactory);
    列表< SchemaUpdateScript> scripts = sessionFactory.generateSchemaUpdateScriptList(方言,元数据);

    Formatter formatter = FormatStyle.DDL.getFormatter(); (SchemaUpdateScript script:scripts)
    {
    System.err.println(formatter.format(script.getScript())+;);
    }




此代码位于@Test中,如 here

祝你好运!


I have a project where we use to rely on hibernate to update database with changes (hibernate.hbm2ddl.auto=update)... even on prod... I am migrating that to use liquibase instead.

My only concern is that not everyone is a sql guru in my team, so I am looking for a simple way to generate the sql script that hibernate would have done if it was updating the database.

We are all using Intellij IDEA but couldn't find this feature.

Do you know any tool capable of doing that?

Thank you

解决方案

To actually display the scripts generated by Hibernate from your mappings, you can:

  • as suggested by Andrei I, add those two lines to your application.properties:

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

Source for Hibernate 4.3: SchemaUpdate.java

  • or manually generate those scripts with the following code:

    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()) + ";");
    }
    

You can even add this code in a @Test, as described here.

Good luck!

这篇关于用Hibernate / Spring生成数据库更新脚本的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆