wyb*_*urn 3 java hibernate jpa flyway
我一直在研究使用hibernate来处理工作中的项目.它看起来像我们想要为给定的一组类生成数据库.但是,强烈建议不要在生产环境中使用hbm2ddl.auto = update.
环顾四周,我看不出人们为这种情况做了什么.一旦数据库被填充并在使用中,我们将希望在数据库中添加/更新额外的持久化类,而不使用不可靠的hibernate更新.
Flyway看起来对处理数据库架构更新很有用,但是这仍然需要我们每次进行任何代码更改时手动创建升级脚本.
有没有一种简单的方法可以自动解决这个问题?如果它不适合在实时环境中更新,我真的看不到休眠点.
我错过了什么吗?
ORM框架不适合升级,因为它们没有关于模式差异的上下文信息.所以如果你将列重命名bar为baz,所有Hibernate都会看到:
ALTER TABLE foo DROP COLUMN bar;
ALTER TABLE foo ADD COLUMN baz VARCHAR(255) NOT NULL;
Run Code Online (Sandbox Code Playgroud)
但实际上你可能想要这样做:
ALTER TABLE foo ADD COLUMN baz VARCHAR(255);
UPDATE foo SET baz = bar;
ALTER TABLE foo ALTER COLUMN baz SET NOT NULL;
ALTER TABLE foo DROP COLUMN bar;
Run Code Online (Sandbox Code Playgroud)
除非您开始明确描述架构更改,否则任何框架都不会生成正确的DDL更新.而且我不知道任何Hibernate功能,因此你需要Flyway或Liquibase.
| 归档时间: |
|
| 查看次数: |
1829 次 |
| 最近记录: |