【问题标题】:Refactoring database with JSON content on liquibase在 liquibase 上使用 JSON 内容重构数据库
【发布时间】:2018-04-01 00:04:54
【问题描述】:

我正在使用 Java Spring 应用程序 + hibernate + 关系数据库(编辑:我们必须支持 Postgresql、MySql 和 Oracle)。

我们的一些表存储序列化为 JSON 的对象。

我们使用 liquibase 来管理我们的更改,但是当涉及到影响这些 JSON 的更改时,我们不知道该怎么做。

您将如何重构这种类型的数据集?

假设我序列化了这个 POJO:

class POJO {
    String name
    Date   someDate
    Double someDouble
...

那我们改一下:

class POJO {
    String name
    Date   someDateButAnotherName
    String aNewField
    //Double someDouble  <-- deleted
...

如何迁移此方案?

【问题讨论】:

  • 如果您的意思是序列化为 Serializable,您可以实现 Serializable 并实现 serializeObject 以便跳过已删除的字段。如果你做 JSON 可以做类似的事情

标签: java json postgresql hibernate liquibase


【解决方案1】:

JSON 序列化是数据库供应商特定的功能,因此 Liquibase xml 语法不支持它。你可以做的是使用&lt;sql&gt;标签的原生sql。

然后,如果您使用PostgreSQL json functions 将序列化对象存储为 PostgreSQL jsonb 类型。

如果您将其存储为纯字符串,则必须使用string manipulations,这会更加棘手。

【讨论】:

  • 我们必须支持 Postgresql、MySql 和 Oracle(可能是客户想要的任何东西)。
猜你喜欢
  • 2014-12-09
  • 1970-01-01
  • 2013-05-03
  • 1970-01-01
  • 2014-10-11
  • 1970-01-01
  • 1970-01-01
  • 2017-06-05
  • 2011-10-18
相关资源
最近更新 更多