Spring + Hibernate使用示例数据初始化mysql dataBase

时间:2016-05-30 11:20:06

标签: hibernate spring-mvc

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

  1. 为第一个lauch
  2. 自动创建所有数据库模式
  3. 如果添加了属性,则更新架构。
  4. 在某些表中添加一些记录,USER的root用户,等等。
  5. 如果hibernate.hbm2ddl.auto设置为"create",我每次重新启动项目时都会丢失以前的数据。 如果设置为"update",我的import.sql我将sql用于创建示例记录,将不会被执行。

    那么,“产品”环境中最好的协议是什么?

2 个答案:

答案 0 :(得分:0)

使用insert into sql命令创建sample_data.sql文件。

insert into table(col1,col2) values (val1,val2);
insert into table(col1,col2) values (val1,val2);

然后将属性添加到您的database.properties文件中,如下所示(我假设您的sample_data.sql和database.properties文件位于同一目录中);

database.hbm2ddl.import_files = sample_data.sql

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

<prop key="hibernate.hbm2ddl.import_files">${database.hbm2ddl.import_files}</prop>

答案 1 :(得分:0)

如果您想保留旧数据,

hibernate.hbm2ddl.auto无法自动处理更复杂的数据库更新方案。

对于制作,我建议http://www.liquibase.org/https://flywaydb.org/

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

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

有关如何使用其中一种工具的详细信息,请参阅http://docs.spring.io/spring-boot/docs/current/reference/html/howto-database-initialization.html#howto-execute-liquibase-database-migrations-on-startup

即使没有Spring Boot,也很简单(只需在类路径中添加新库,创建第一个脚本和一个Spring Bean)。

编辑:如果您对使用上述概念的示例项目感兴趣, 见https://spring.io/blog/2016/05/31/zero-downtime-deployment-with-a-database

IT描述了更复杂的方案 - 如何在没有应用程序停机的情况下更新数据库。