加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 大数据 > 正文

java – 从类创建HSQL创建表查询

发布时间:2020-12-15 01:40:40 所属栏目:大数据 来源:网络整理
导读:我有一个很常用的项目,我正在进行当前更新.有几个地方可以安装此项目,并且将来不确定将来可能更新到哪个版本的版本和版本.但是现在他们都是一样的. 我的问题源于这样一个事实,即hibernate实体类可能会有很多变化,并且必须很容易更新到更新的版本而不会有任何

我有一个很常用的项目,我正在进行当前更新.有几个地方可以安装此项目,并且将来不确定将来可能更新到哪个版本的版本和版本.但是现在他们都是一样的.

我的问题源于这样一个事实,即hibernate实体类可能会有很多变化,并且必须很容易更新到更新的版本而不会有任何麻烦,并且不会丢失数据库内容.只需替换WAR并启动它就应该自行迁移.

据我所知,除非hibernate.hbm2ddl.auto = create,否则Hibernate不会更改表,但它实际上会抛弃所有数据?

所以现在当Spring上下文完全加载时,它会执行一个bean,它将数据库迁移到当前版本,方法是执行从versionX到versionY的所有更改(之前的版本保存在数据库中),并手动更改桌子.

使用一些硬编码的ALTER TABLE来添加一些列并不是很麻烦,但是当谈到添加完整的新表时,必须编写所有这些内容感觉很愚蠢……

所以我的问题是这样的:

>有没有办法将实体类和方言发送给Hibernate
代码在某处,并获取有效的SQL查询来创建表?
>甚至更好,以某种方式创建一个SQL字符串,用于向表中添加一个列,dialect-safe?

我希望这不是一个愚蠢的问题,在Hibernate方面我没有错过任何明显的东西……

最佳答案
我认为你不能完全自动化这个. Hibernate有hbm2ddl工具(可用作ant任务或maven插件)从你的hibernate配置生成所需的DDL语句来创建一个空的数据库,但我不知道任何可以在两个之间自动“diff”的工具版本.在任何情况下,你最好小心翼翼地手工操作差异,因为只有你知道你的对象模型足够好才能为现有实体的新属性选择正确的默认值.

一旦你完成了差异,就可以使用像liquibase这样的工具来管理它们,并在应用程序启动时处理实际应用更新到数据库.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读