在liquibase上使用JSON内容重构数据库
问题描述:
我正在使用Java Spring应用程序+ hibernate +关系数据库(编辑:我们必须支持Postgresql,MySql和Oracle)。在liquibase上使用JSON内容重构数据库
我们的一些表存储的对象序列化为JSON。
我们使用liquibase来管理我们的更改,但是当涉及到影响这些JSON的更改时,我们不知道该怎么做。
你将如何去重构这种类型的数据集?
想象我这个序列POJO:
class POJO {
String name
Date someDate
Double someDouble
...
然后我们改变它:
class POJO {
String name
Date someDateButAnotherName
String aNewField
//Double someDouble <-- deleted
...
我怎么能迁移这种情况?
答
JSON序列化是一个数据库供应商特定的功能,因此它不受Liquibase xml语法支持。你可以做的是使用<sql>
标签的原生sql。
然后,如果您使用PostgreSQL json functions将您的序列化对象存储为PostgreSQL jsonb类型。
如果你将它作为纯字符串存储,你将不得不做string manipulations这会更棘手。
+0
我们必须支持Postgresql,MySql和Oracle(可能是客户想要的任何东西)。 – Saita
如果您的意思是序列化到Serializable,您可以实现Serializable并实现serializeObject,以便它跳过删除的字段。 如果你在做JSON,可以做类似的事情 –