Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/hibernate/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/spring-mvc/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
弹簧&x2B;使用示例数据初始化Hibernate mysql数据库_Hibernate_Spring Mvc - Fatal编程技术网

弹簧&x2B;使用示例数据初始化Hibernate mysql数据库

弹簧&x2B;使用示例数据初始化Hibernate mysql数据库,hibernate,spring-mvc,Hibernate,Spring Mvc,我想部署一个Spring mvc+Hibernate项目,我想: 为第一次启动自动创建所有数据库架构 如果添加了属性,则更新架构 在一些表中添加一些记录,用户的根用户,等等 如果hibernate.hbm2ddl.auto设置为“创建”,每次重新启动项目时,我都会丢失以前的数据。 如果设置为“update”,将不会执行我的import.sql,我将sql放在其中以创建示例记录 那么,“产品”环境中最好的做法是什么呢?使用insert into sql命令创建一个示例_data.sql文件 ins

我想部署一个Spring mvc+Hibernate项目,我想:

  • 为第一次启动自动创建所有数据库架构
  • 如果添加了属性,则更新架构
  • 在一些表中添加一些记录,用户的根用户,等等
  • 如果
    hibernate.hbm2ddl.auto
    设置为
    “创建”
    ,每次重新启动项目时,我都会丢失以前的数据。 如果设置为
    “update”
    ,将不会执行我的
    import.sql
    ,我将sql放在其中以创建示例记录


    那么,“产品”环境中最好的做法是什么呢?

    使用insert into sql命令创建一个示例_data.sql文件

    insert into table(col1,col2) values (val1,val2);
    insert into table(col1,col2) values (val1,val2);
    
    然后将属性添加到database.properties文件中,如下所示(我假设示例_data.sql和database.properties文件位于同一目录中)

    最后一步是,;将以下属性添加到sessionFactory配置中

    <prop key="hibernate.hbm2ddl.import_files">${database.hbm2ddl.import_files}</prop>
    
    ${database.hbm2ddl.import_files}
    
    使用insert into sql命令创建一个示例_data.sql文件

    insert into table(col1,col2) values (val1,val2);
    insert into table(col1,col2) values (val1,val2);
    
    然后将属性添加到database.properties文件中,如下所示(我假设示例_data.sql和database.properties文件位于同一目录中)

    最后一步是,;将以下属性添加到sessionFactory配置中

    <prop key="hibernate.hbm2ddl.import_files">${database.hbm2ddl.import_files}</prop>
    
    ${database.hbm2ddl.import_files}
    
    hibernate.hbm2ddl.auto无法在需要保留旧数据的情况下自动处理更复杂的数据库更新方案

    对于生产,我推荐

    我对Liquibase有很好的经验(在多个项目中使用了几年)

    有一些学习曲线和一些重复(您必须自己创建DB结构,这些工具不能从实体创建DB结构)

    有关如何装载其中一个工具的详细信息,请参阅

    即使没有Spring引导,它也非常简单(只需向类路径添加新库,创建第一个脚本和一个Springbean)

    编辑:如果您对使用上述概念的示例项目感兴趣, 看


    它描述了更复杂的场景—如何在应用程序不停机的情况下更新数据库。

    hibernate.hbm2ddl.auto
    无法在需要保留旧数据的情况下自动处理更复杂的数据库更新场景

    对于生产,我推荐

    我对Liquibase有很好的经验(在多个项目中使用了几年)

    有一些学习曲线和一些重复(您必须自己创建DB结构,这些工具不能从实体创建DB结构)

    有关如何装载其中一个工具的详细信息,请参阅

    即使没有Spring引导,它也非常简单(只需向类路径添加新库,创建第一个脚本和一个Springbean)

    编辑:如果您对使用上述概念的示例项目感兴趣, 看

    它描述了更复杂的场景——如何在应用程序不停机的情况下更新数据库