JPA/Hibernate对迁移的支持?

wil*_*ood 27 java hibernate jpa h2

我目前正在使用JPA/Hibernate处理桌面应用程序,以便在H2数据库中保存数据.如果我出于某种原因需要在将来对数据库模式进行更改,我很好奇我的选择是什么.也许我将不得不引入新实体,删除它们或只是更改实体中的属性类型.

  • JPA/Hibernate是否支持这样做?
  • 我是否必须手动编写解决方案脚本?

Hen*_*ing 22

我通常让Hibernate在开发期间生成DDL,然后在部署到测试服务器时创建一个手动SQL迁移脚本(我后来也用于UAT和实时服务器).

Hibernate中的DDL生成根本不支持数据迁移,如果只添加非空字段,DDL生成就无法帮助您.

我还没有找到任何真正有用的迁移抽象来帮助解决这个问题.

有许多库(看看这个SO问题的例子),但是当你正在做一些事情,比如使用连接继承将现有实体拆分为层次结构时,你总是回到纯SQL.


Pas*_*ent 7

也许我将不得不引入新实体,删除它们或只是更改实体中的属性类型.

我没有任何经验,但Liquibase提供了一些Hibernate集成,可以将您的映射与数据库进行比较并生成相应的更改日志:

LiquiBase-Hibernate集成将当前Hibernate映射所需的数据库更改记录到更改日志文件,然后您可以在执行之前根据需要进行检查和修改.

仍在寻找机会与它一起玩并找到我未决问题的答案:

  • 使用注释时它是否有效?
  • 它需要一个hibernate.cfg.xml文件(虽然这不会是一个很大的障碍)?

更新:好的,Nathan Voxland在本回复中都提到了两个问题,答案如下:

  • 是的,它在使用注释时有效
  • 是的它需要一个hibernate.cfg.xml(现在)