Java JPA/Hibernate对迁移的支持?
我目前正在使用JPA/Hibernate开发一个桌面应用程序,以将数据持久化到H2数据库中。我很好奇,如果将来出于某种原因需要更改数据库模式,我的选择是什么。也许我必须引入新的实体,删除它们,或者只是更改实体中属性的类型Java JPA/Hibernate对迁移的支持?,java,hibernate,jpa,h2,Java,Hibernate,Jpa,H2,我目前正在使用JPA/Hibernate开发一个桌面应用程序,以将数据持久化到H2数据库中。我很好奇,如果将来出于某种原因需要更改数据库模式,我的选择是什么。也许我必须引入新的实体,删除它们,或者只是更改实体中属性的类型 JPA/Hibernate中是否支持这样做 我是否需要手动编写解决方案脚本 我通常让Hibernate在开发过程中生成DDL,然后在部署到测试服务器时创建一个手动SQL迁移脚本(稍后我也将其用于UAT和实时服务器) Hibernate中的DDL生成根本不支持数据迁移,如果只添
- JPA/Hibernate中是否支持这样做
- 我是否需要手动编写解决方案脚本
- 数据库休眠-手动将数据库更改镜像到实体。这意味着您的数据库处于“领先”状态
- hibernate to db-使用
,或者在更改实体后手动更改db-这里的对象模型是“前导的”hibernate.hbm2ddl.auto=update
- 它在使用注释时有效吗
- 它是否需要一个
文件(尽管这不是一个很大的障碍)李>hibernate.cfg.xml
更新:好的,Nathan Voxland在中介绍了这两个问题,答案如下:
- 是使用注释时有效
- 是它需要一个hibernate.cfg.xml(目前)
hbm2ddl=auto
,如果您这样做,那就是自找麻烦。首先,没有hbm2ddl=auto,只有hbm2ddl.auto=update,您不应该在生产环境中使用它production@OttoAllmendinger我会把房子的名字定下来。我知道很多人都说“不要在生产中使用它”,但如果你很小心,并且有一个登台环境,这是一个比支持迁移脚本更好的选择。酷,我实际上没有hibernate映射文件,只有一个持久性。xml@willcodejavaforfood是的,这里也一样。但正如我所写的,我不确定它是否能够处理persistence.xml(我正在考虑生成一个hibernate.cfg.xml,以便在需要时使用它)。也许打开另一个问题,(Liquibase的创建者)就会出现:)根据这个[问题](您确实需要)您需要一个hibernate.cfg.xml,但您是对的,这不会是一个大问题。如果我们可以使用hibernate创建数据库和东西,那么迁移工具的需求是什么-jpa@IshanGarg无法通过hibernate jpa迁移数据。上面给出了一个简单的例子:如果向表中添加一个非null列,那么hibernate jpa迁移本身就不知道为现有记录在该列中放置什么。但也有很多更复杂的情况:合并两列或使用特定的解析规则拆分一列,将表中的记录拆分为多个表等。对于任何此类情况,您需要hibernate jpa单独无法提供的内容。寻找比2017年更新的答案这是一个老问题,但不断有人问,无论如何。我将在这里提及,以供将来参考。它允许通过SQL进行数据库维护/版本控制-这也允许数据迁移。从现有/维护的数据库中,您可以使用hibernate生成JPA实体。嘿,如果我们可以使用hibernate JPA@user625488创建数据库和文件,那么迁移工具需要什么