如何在hibernate中首次创建数据库模式,并在模式修改时进一步更新?
我想第一次在hibernate中创建数据库模式。 而且,如果模式中有任何修改,例如添加新表或删除某些列,我想更新现有模式,保持以前的数据不变。
根据此问题给出的选项,看起来我可以创建模式破坏以前的数据,或者我可以更新模式。
有什么价值可以兼得吗?
实际上我只是检查了
甚至是第一次创建表,然后如果存在表/模式它会更新。
Update
属性适用于启动或添加新模型。 您希望保留先前保存的实体实例。 这是默认的架构创建样式。
如果需要,它会尝试更新架构。 支持以下更新:
看看我的一些观察
- 添加字段 – 将新列添加到表中。
- 重命名字段 – 将新列添加到表中,而原始列保留但不再使用。 注意:旧列中的数据不会迁移到新列。
- 删除字段 – 列保持但未使用。
- 更改字段类型 – 列的类型不会更改,这可能会导致类型不匹配的exception。
- 创建实体 – 创建新表。
- 重命名实体 – 创建新表,同时保留原始表。
- 将实体移动到另一个文件夹 – 创建一个新表,同时保留原始表。
- 删除实体 – 表格保留。
您可以使用’import.sql’。
在资源中添加import.sql文件如下:
/*create database at first time*/ CREATE SCHEMA your-database-name;
并在’hibernate.cfg.xml’中添加一行,如下所示:
... ... import.sql ... ...
所以,如果不存在数据库,hibernate会创建新的数据库。
我不建议根据实体更改更新数据库模式。 尝试使用Flyway或Liquibase 。 您可以在stackoverflow上找到类似的问题,例如。 Hibernate / JPA DB Schema生成最佳实践