2017-10-19 7 views
0

Je travaille avec une application Java Spring + base de données relationnelle hibernate + (Edit: nous devons prendre en charge Postgresql, MySql et Oracle).Refactoring de base de données avec contenu JSON sur liquibase

Certaines de nos tables stocke des objets sérialisés en JSON.

Nous utilisons liquibase pour gérer nos changements, mais, quand il s'agit de changements qui affectent ces JSON, nous ne savons pas quoi faire.

Comment procéderiez-vous à la refactorisation de ce type de jeu de données?

Imaginez que je sérialisez POJO:

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

Ensuite, nous changeons:

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

Comment pourrais-je migrer ce scénario?

+0

Si vous voulez sérialiser Serializable, vous pouvez implémenter Serializable et implémenter serializeObject afin d'ignorer le champ supprimé. Quelque chose de similaire peut être fait si vous faites JSON –

Répondre

2

La sérialisation JSON est une fonction spécifique au fournisseur de base de données, elle n'est donc pas prise en charge par la syntaxe xml de Liquibase. Ce que vous pouvez faire est SQL natif en utilisant <sql> tag.

Ensuite, si vous stockez votre objet sérialisé en tant que type jsonb PostgreSQL en utilisant PostgreSQL json functions.

Si vous le stockez en tant que chaîne simple, vous devrez faire string manipulations qui serait plus difficile.

+0

Nous devons soutenir Postgresql, MySql et Oracle (éventuellement tout ce que le client veut). – Saita