{"id":7296,"date":"2025-08-21T13:40:14","date_gmt":"2025-08-21T11:40:14","guid":{"rendered":"https:\/\/www.aiknow.io\/liquibase-jpa-buddy-una-combinacion-ganadora\/"},"modified":"2025-08-21T13:40:14","modified_gmt":"2025-08-21T11:40:14","slug":"liquibase-jpa-buddy-una-combinacion-ganadora","status":"publish","type":"post","link":"https:\/\/www.aiknow.io\/es\/liquibase-jpa-buddy-una-combinacion-ganadora\/","title":{"rendered":"Liquibase + JPA Buddy: una combinaci\u00f3n ganadora"},"content":{"rendered":"<h2><span style=\"font-weight: 400;\">Liquibase + JPA Buddy: el problema que resuelve<\/span><\/h2>\n<p>Un problema habitual en muchos proyectos y marcos de trabajo es la gesti\u00f3n de los cambios en la estructura de la base de datos durante la vida del proyecto. Reducido al m\u00ednimo, este problema puede formularse del siguiente modo: \u00bfC\u00f3mo puedo automatizar la actualizaci\u00f3n de una base de datos en funci\u00f3n de los cambios realizados en las entidades del proyecto? <\/p>\n<p>Veamos c\u00f3mo se puede resolver este problema en un proyecto Spring Boot sin tener que escribir scripts SQL y ejecutarlos manualmente. Basamos este tutorial en <a href=\"https:\/\/jpa-buddy.com\/\" target=\"_blank\" rel=\"noopener\">JPA Buddy, <\/a>que se integra con IntelliJ IDEA. <\/p>\n<p>A continuaci\u00f3n, debemos instalar el plugin IntelliJ IDEA JPA Buddy. Adem\u00e1s, es necesario disponer de la versi\u00f3n Ultimate de IntelliJ IDEA. <\/p>\n<p>Comencemos con un proyecto Spring Boot. En nuestro caso, el proyecto b\u00e1sico es una implementaci\u00f3n de demostraci\u00f3n de un host <a href=\"https:\/\/sparkplug.eclipse.org\/specification\/\" target=\"_blank\" rel=\"noopener\">Sparkplug <\/a>primario: una aplicaci\u00f3n Spring Boot que implementa la base de la especificaci\u00f3n Sparkplug B v1.0. <\/p>\n<p>El detalle de la aplicaci\u00f3n aqu\u00ed es irrelevante; baste decir que se conecta a una base de datos PostgreSQL llamada <em>sparkplugdemo<\/em>.<\/p>\n<p>A\u00f1adimos la dependencia de Liquibase al pom.xml:<\/p>\n<p><img decoding=\"async\" class=\"aligncenter size-full wp-image-5439\" src=\"https:\/\/www.aiknow.io\/wpvt\/wp-content\/uploads\/2024\/06\/liquibase-dipendenza1.jpg\" alt=\"\" width=\"405\" height=\"88\" srcset=\"https:\/\/www.aiknow.io\/wpvt\/wp-content\/uploads\/2024\/06\/liquibase-dipendenza1.jpg 405w, https:\/\/www.aiknow.io\/wpvt\/wp-content\/uploads\/2024\/06\/liquibase-dipendenza1-300x65.jpg 300w\" sizes=\"(max-width: 405px) 100vw, 405px\" \/><\/p>\n<p>En el directorio src\/main\/resources creamos db\/changelog y aqu\u00ed un fichero db.changelog-master.xml. El contenido inicial del archivo debe ser: <\/p>\n<p><img fetchpriority=\"high\" decoding=\"async\" class=\"aligncenter size-full wp-image-5441\" src=\"https:\/\/www.aiknow.io\/wpvt\/wp-content\/uploads\/2024\/06\/liquibase-dipendenza2.jpg\" alt=\"\" width=\"584\" height=\"165\" srcset=\"https:\/\/www.aiknow.io\/wpvt\/wp-content\/uploads\/2024\/06\/liquibase-dipendenza2.jpg 584w, https:\/\/www.aiknow.io\/wpvt\/wp-content\/uploads\/2024\/06\/liquibase-dipendenza2-300x85.jpg 300w\" sizes=\"(max-width: 584px) 100vw, 584px\" \/><\/p>\n<p>&nbsp;<\/p>\n<p>Nella cartella src\/main\/resources si crea db\/changelog e qui un file db.changelog-master.xml. Il contenuto iniziale del file deve essere:<\/p>\n<p><code>spring.liquibase.change-log=classpath:\/db\/changelog\/db.changelog-master.xml<br \/>\nspring.liquibase.enabled=true<br \/>\nspring.liquibase.url=jdbc:postgresql:\/\/localhost:5431\/sparkplugdemo<br \/>\nspring.liquibase.user=[DATABASE_USER]<br \/>\nspring.liquibase.password=[DATABASE_PASSWORD]<\/code><\/p>\n<p>En el bloque de propiedades anterior especificamos para Liquibase el fichero maestro de changelog, que en nuestro caso est\u00e1 en formato XML, y los par\u00e1metros de conexi\u00f3n a la base de datos que Liquibase debe actualizar.<br \/>\nDe esta forma, cuando la aplicaci\u00f3n arranca, comprueba que la base de datos a la que se va a conectar est\u00e1 correctamente actualizada mediante una tabla de hist\u00f3rico de cambios. Si se han realizado nuevos cambios en la estructura de la base de datos, Liquibase realizar\u00e1 autom\u00e1ticamente las actualizaciones indicadas en los distintos changelogs que a\u00fan no se hayan aplicado. <\/p>\n<p>As\u00ed es como aparece el archivo con su contenido inicialmente. Despu\u00e9s, no habr\u00e1 necesidad de editar este archivo manualmente: JPA Buddy lo har\u00e1 por nosotros. <\/p>\n<p><img decoding=\"async\" class=\"aligncenter wp-image-5443 size-large\" src=\"https:\/\/www.aiknow.io\/wpvt\/wp-content\/uploads\/2024\/06\/aiknow-liquibase-3-1024x286.png\" alt=\"\" width=\"1024\" height=\"286\" srcset=\"https:\/\/www.aiknow.io\/wpvt\/wp-content\/uploads\/2024\/06\/aiknow-liquibase-3-1024x286.png 1024w, https:\/\/www.aiknow.io\/wpvt\/wp-content\/uploads\/2024\/06\/aiknow-liquibase-3-300x84.png 300w, https:\/\/www.aiknow.io\/wpvt\/wp-content\/uploads\/2024\/06\/aiknow-liquibase-3-768x215.png 768w, https:\/\/www.aiknow.io\/wpvt\/wp-content\/uploads\/2024\/06\/aiknow-liquibase-3-1536x430.png 1536w, https:\/\/www.aiknow.io\/wpvt\/wp-content\/uploads\/2024\/06\/aiknow-liquibase-3-2048x573.png 2048w\" sizes=\"(max-width: 1024px) 100vw, 1024px\" \/><\/p>\n<p>Abramos ahora la pantalla del plugin JPA Buddy (que se encuentra bajo el nombre JPA Explorer).<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter wp-image-5445 size-large\" src=\"https:\/\/www.aiknow.io\/wpvt\/wp-content\/uploads\/2024\/06\/aiknow-liquibase-4-1024x899.png\" alt=\"\" width=\"1024\" height=\"899\" srcset=\"https:\/\/www.aiknow.io\/wpvt\/wp-content\/uploads\/2024\/06\/aiknow-liquibase-4-1024x899.png 1024w, https:\/\/www.aiknow.io\/wpvt\/wp-content\/uploads\/2024\/06\/aiknow-liquibase-4-300x263.png 300w, https:\/\/www.aiknow.io\/wpvt\/wp-content\/uploads\/2024\/06\/aiknow-liquibase-4-768x674.png 768w, https:\/\/www.aiknow.io\/wpvt\/wp-content\/uploads\/2024\/06\/aiknow-liquibase-4-1536x1348.png 1536w, https:\/\/www.aiknow.io\/wpvt\/wp-content\/uploads\/2024\/06\/aiknow-liquibase-4.png 1586w\" sizes=\"(max-width: 1024px) 100vw, 1024px\" \/><\/p>\n<p>Desde aqu\u00ed podemos seleccionar el +.<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter wp-image-5447 size-large\" src=\"https:\/\/www.aiknow.io\/wpvt\/wp-content\/uploads\/2024\/06\/aiknow-liquibase-5-1024x363.png\" alt=\"\" width=\"1024\" height=\"363\" srcset=\"https:\/\/www.aiknow.io\/wpvt\/wp-content\/uploads\/2024\/06\/aiknow-liquibase-5-1024x363.png 1024w, https:\/\/www.aiknow.io\/wpvt\/wp-content\/uploads\/2024\/06\/aiknow-liquibase-5-300x106.png 300w, https:\/\/www.aiknow.io\/wpvt\/wp-content\/uploads\/2024\/06\/aiknow-liquibase-5-768x272.png 768w, https:\/\/www.aiknow.io\/wpvt\/wp-content\/uploads\/2024\/06\/aiknow-liquibase-5-1536x545.png 1536w, https:\/\/www.aiknow.io\/wpvt\/wp-content\/uploads\/2024\/06\/aiknow-liquibase-5.png 1962w\" sizes=\"(max-width: 1024px) 100vw, 1024px\" \/><\/p>\n<p>A continuaci\u00f3n, elegimos la opci\u00f3n Init Changelog.<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter wp-image-5449 size-large\" src=\"https:\/\/www.aiknow.io\/wpvt\/wp-content\/uploads\/2024\/06\/aiknow-liquibase-6-816x1024.png\" alt=\"\" width=\"816\" height=\"1024\" srcset=\"https:\/\/www.aiknow.io\/wpvt\/wp-content\/uploads\/2024\/06\/aiknow-liquibase-6-816x1024.png 816w, https:\/\/www.aiknow.io\/wpvt\/wp-content\/uploads\/2024\/06\/aiknow-liquibase-6-239x300.png 239w, https:\/\/www.aiknow.io\/wpvt\/wp-content\/uploads\/2024\/06\/aiknow-liquibase-6-768x963.png 768w, https:\/\/www.aiknow.io\/wpvt\/wp-content\/uploads\/2024\/06\/aiknow-liquibase-6-1224x1536.png 1224w, https:\/\/www.aiknow.io\/wpvt\/wp-content\/uploads\/2024\/06\/aiknow-liquibase-6.png 1250w\" sizes=\"(max-width: 816px) 100vw, 816px\" \/><\/p>\n<p>Utilizamos el modelo como fuente y configuramos el tipo de base de datos.<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter wp-image-5451 size-large\" src=\"https:\/\/www.aiknow.io\/wpvt\/wp-content\/uploads\/2024\/06\/aiknow-liquibase-7-1024x367.png\" alt=\"\" width=\"1024\" height=\"367\" srcset=\"https:\/\/www.aiknow.io\/wpvt\/wp-content\/uploads\/2024\/06\/aiknow-liquibase-7-1024x367.png 1024w, https:\/\/www.aiknow.io\/wpvt\/wp-content\/uploads\/2024\/06\/aiknow-liquibase-7-300x107.png 300w, https:\/\/www.aiknow.io\/wpvt\/wp-content\/uploads\/2024\/06\/aiknow-liquibase-7-768x275.png 768w, https:\/\/www.aiknow.io\/wpvt\/wp-content\/uploads\/2024\/06\/aiknow-liquibase-7-1536x550.png 1536w, https:\/\/www.aiknow.io\/wpvt\/wp-content\/uploads\/2024\/06\/aiknow-liquibase-7-2048x733.png 2048w\" sizes=\"(max-width: 1024px) 100vw, 1024px\" \/><\/p>\n<p>Se generar\u00e1 un archivo de registro de cambios y, a continuaci\u00f3n, aparecer\u00e1 una pantalla similar a la siguiente.<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter size-large wp-image-5453\" src=\"https:\/\/www.aiknow.io\/wpvt\/wp-content\/uploads\/2024\/06\/aiknow-liquibase-8-1024x733.png\" alt=\"\" width=\"1024\" height=\"733\" srcset=\"https:\/\/www.aiknow.io\/wpvt\/wp-content\/uploads\/2024\/06\/aiknow-liquibase-8-1024x733.png 1024w, https:\/\/www.aiknow.io\/wpvt\/wp-content\/uploads\/2024\/06\/aiknow-liquibase-8-300x215.png 300w, https:\/\/www.aiknow.io\/wpvt\/wp-content\/uploads\/2024\/06\/aiknow-liquibase-8-768x550.png 768w, https:\/\/www.aiknow.io\/wpvt\/wp-content\/uploads\/2024\/06\/aiknow-liquibase-8-1536x1100.png 1536w, https:\/\/www.aiknow.io\/wpvt\/wp-content\/uploads\/2024\/06\/aiknow-liquibase-8-2048x1467.png 2048w\" sizes=\"(max-width: 1024px) 100vw, 1024px\" \/><\/p>\n<p>Cambie el directorio y el nombre del archivo. Este paso es opcional; es importante configurar la inclusi\u00f3n del registro de cambios en el archivo maestro creado al principio, como se ve a continuaci\u00f3n en<strong> Incluir a.<\/strong> <\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter wp-image-5455 size-large\" src=\"https:\/\/www.aiknow.io\/wpvt\/wp-content\/uploads\/2024\/06\/aiknow-liquibase-9-1024x730.png\" alt=\"\" width=\"1024\" height=\"730\" srcset=\"https:\/\/www.aiknow.io\/wpvt\/wp-content\/uploads\/2024\/06\/aiknow-liquibase-9-1024x730.png 1024w, https:\/\/www.aiknow.io\/wpvt\/wp-content\/uploads\/2024\/06\/aiknow-liquibase-9-300x214.png 300w, https:\/\/www.aiknow.io\/wpvt\/wp-content\/uploads\/2024\/06\/aiknow-liquibase-9-768x548.png 768w, https:\/\/www.aiknow.io\/wpvt\/wp-content\/uploads\/2024\/06\/aiknow-liquibase-9-1536x1096.png 1536w, https:\/\/www.aiknow.io\/wpvt\/wp-content\/uploads\/2024\/06\/aiknow-liquibase-9-2048x1461.png 2048w\" sizes=\"(max-width: 1024px) 100vw, 1024px\" \/><\/p>\n<p>A continuaci\u00f3n, se generar\u00e1 el directorio con el archivo de registro de cambios:<\/p>\n<p>&nbsp;<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter size-large wp-image-5487\" src=\"https:\/\/www.aiknow.io\/wpvt\/wp-content\/uploads\/2024\/06\/aiknow-liquibase-15-ok-1024x506.png\" alt=\"\" width=\"1024\" height=\"506\" srcset=\"https:\/\/www.aiknow.io\/wpvt\/wp-content\/uploads\/2024\/06\/aiknow-liquibase-15-ok-1024x506.png 1024w, https:\/\/www.aiknow.io\/wpvt\/wp-content\/uploads\/2024\/06\/aiknow-liquibase-15-ok-300x148.png 300w, https:\/\/www.aiknow.io\/wpvt\/wp-content\/uploads\/2024\/06\/aiknow-liquibase-15-ok-768x380.png 768w, https:\/\/www.aiknow.io\/wpvt\/wp-content\/uploads\/2024\/06\/aiknow-liquibase-15-ok.png 1210w\" sizes=\"(max-width: 1024px) 100vw, 1024px\" \/><\/p>\n<p>El archivo db.changelog-master.xml incluir\u00e1 autom\u00e1ticamente el nuevo registro de cambios. No es necesario hacerlo a mano. <\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter size-large wp-image-5489\" src=\"https:\/\/www.aiknow.io\/wpvt\/wp-content\/uploads\/2024\/06\/aiknow-liquibase-16-ok-1024x312.png\" alt=\"\" width=\"1024\" height=\"312\" srcset=\"https:\/\/www.aiknow.io\/wpvt\/wp-content\/uploads\/2024\/06\/aiknow-liquibase-16-ok-1024x312.png 1024w, https:\/\/www.aiknow.io\/wpvt\/wp-content\/uploads\/2024\/06\/aiknow-liquibase-16-ok-300x91.png 300w, https:\/\/www.aiknow.io\/wpvt\/wp-content\/uploads\/2024\/06\/aiknow-liquibase-16-ok-768x234.png 768w, https:\/\/www.aiknow.io\/wpvt\/wp-content\/uploads\/2024\/06\/aiknow-liquibase-16-ok-1536x468.png 1536w, https:\/\/www.aiknow.io\/wpvt\/wp-content\/uploads\/2024\/06\/aiknow-liquibase-16-ok-2048x624.png 2048w\" sizes=\"(max-width: 1024px) 100vw, 1024px\" \/><\/p>\n<p>Nuestro registro de cambios contendr\u00e1 algo como lo siguiente:<\/p>\n<p>&nbsp;<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter size-large wp-image-5491\" src=\"https:\/\/www.aiknow.io\/wpvt\/wp-content\/uploads\/2024\/06\/aiknow-liquibase-17-1024x736.png\" alt=\"\" width=\"1024\" height=\"736\" srcset=\"https:\/\/www.aiknow.io\/wpvt\/wp-content\/uploads\/2024\/06\/aiknow-liquibase-17-1024x736.png 1024w, https:\/\/www.aiknow.io\/wpvt\/wp-content\/uploads\/2024\/06\/aiknow-liquibase-17-300x216.png 300w, https:\/\/www.aiknow.io\/wpvt\/wp-content\/uploads\/2024\/06\/aiknow-liquibase-17-768x552.png 768w, https:\/\/www.aiknow.io\/wpvt\/wp-content\/uploads\/2024\/06\/aiknow-liquibase-17.png 1122w\" sizes=\"(max-width: 1024px) 100vw, 1024px\" \/><\/p>\n<p>Ahora aplicamos los cambios a la base de datos volviendo a la pantalla del plugin JPA Buddy y seleccionando el icono correspondiente a la actualizaci\u00f3n.<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter wp-image-5457 size-large\" src=\"https:\/\/www.aiknow.io\/wpvt\/wp-content\/uploads\/2024\/06\/aiknow-liquibase-11-1024x736.png\" alt=\"liquibase \" width=\"1024\" height=\"736\" srcset=\"https:\/\/www.aiknow.io\/wpvt\/wp-content\/uploads\/2024\/06\/aiknow-liquibase-11-1024x736.png 1024w, https:\/\/www.aiknow.io\/wpvt\/wp-content\/uploads\/2024\/06\/aiknow-liquibase-11-300x216.png 300w, https:\/\/www.aiknow.io\/wpvt\/wp-content\/uploads\/2024\/06\/aiknow-liquibase-11-768x552.png 768w, https:\/\/www.aiknow.io\/wpvt\/wp-content\/uploads\/2024\/06\/aiknow-liquibase-11.png 1130w\" sizes=\"(max-width: 1024px) 100vw, 1024px\" \/><\/p>\n<p>Se nos pedir\u00e1 la conexi\u00f3n de la base de datos a actualizar. Evidentemente, la base de datos debe estar presente (aunque est\u00e9 vac\u00eda). Cre\u00e9mosla, pues, antes de realizar esta operaci\u00f3n.  <\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter size-large wp-image-5459\" src=\"https:\/\/www.aiknow.io\/wpvt\/wp-content\/uploads\/2024\/06\/aiknow-liquibase-12-1024x389.png\" alt=\"\" width=\"1024\" height=\"389\" srcset=\"https:\/\/www.aiknow.io\/wpvt\/wp-content\/uploads\/2024\/06\/aiknow-liquibase-12-1024x389.png 1024w, https:\/\/www.aiknow.io\/wpvt\/wp-content\/uploads\/2024\/06\/aiknow-liquibase-12-300x114.png 300w, https:\/\/www.aiknow.io\/wpvt\/wp-content\/uploads\/2024\/06\/aiknow-liquibase-12-768x292.png 768w, https:\/\/www.aiknow.io\/wpvt\/wp-content\/uploads\/2024\/06\/aiknow-liquibase-12-1536x583.png 1536w, https:\/\/www.aiknow.io\/wpvt\/wp-content\/uploads\/2024\/06\/aiknow-liquibase-12-2048x778.png 2048w\" sizes=\"(max-width: 1024px) 100vw, 1024px\" \/><\/p>\n<p>Despu\u00e9s de la actualizaci\u00f3n, veremos un mensaje de \u00e9xito.<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter size-large wp-image-5461\" src=\"https:\/\/www.aiknow.io\/wpvt\/wp-content\/uploads\/2024\/06\/aiknow-liquibase-13-1024x484.png\" alt=\"\" width=\"1024\" height=\"484\" srcset=\"https:\/\/www.aiknow.io\/wpvt\/wp-content\/uploads\/2024\/06\/aiknow-liquibase-13-1024x484.png 1024w, https:\/\/www.aiknow.io\/wpvt\/wp-content\/uploads\/2024\/06\/aiknow-liquibase-13-300x142.png 300w, https:\/\/www.aiknow.io\/wpvt\/wp-content\/uploads\/2024\/06\/aiknow-liquibase-13-768x363.png 768w, https:\/\/www.aiknow.io\/wpvt\/wp-content\/uploads\/2024\/06\/aiknow-liquibase-13-1536x726.png 1536w, https:\/\/www.aiknow.io\/wpvt\/wp-content\/uploads\/2024\/06\/aiknow-liquibase-13-2048x967.png 2048w\" sizes=\"(max-width: 1024px) 100vw, 1024px\" \/><\/p>\n<p>Si ahora modificamos las entidades de nuestro proyecto, bastar\u00e1 con generar un registro de cambios de diferencias desde el plugin JPA, como puede verse en la siguiente captura de pantalla.<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter wp-image-5463 size-large\" src=\"https:\/\/www.aiknow.io\/wpvt\/wp-content\/uploads\/2024\/06\/aiknow-liquibase-14-842x1024.png\" alt=\"liquibase\" width=\"842\" height=\"1024\" srcset=\"https:\/\/www.aiknow.io\/wpvt\/wp-content\/uploads\/2024\/06\/aiknow-liquibase-14-842x1024.png 842w, https:\/\/www.aiknow.io\/wpvt\/wp-content\/uploads\/2024\/06\/aiknow-liquibase-14-247x300.png 247w, https:\/\/www.aiknow.io\/wpvt\/wp-content\/uploads\/2024\/06\/aiknow-liquibase-14-768x934.png 768w, https:\/\/www.aiknow.io\/wpvt\/wp-content\/uploads\/2024\/06\/aiknow-liquibase-14.png 1256w\" sizes=\"(max-width: 842px) 100vw, 842px\" \/><\/p>\n<p>Gracias por seguir este peque\u00f1o tutorial, si a\u00fan tienes &#8220;sed&#8221; de p\u00edldoras tecnol\u00f3gicas, \u00a1no te pierdas ni un tema de nuestro <a href=\"https:\/\/www.aiknow.io\/es\/aiknow-blog\/\">blog<\/a>!<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Liquibase + JPA Buddy: el problema que resuelve Un problema habitual en muchos proyectos y marcos de trabajo es la gesti\u00f3n de los cambios en la estructura de la base de datos durante la vida del proyecto. Reducido al m\u00ednimo, este problema puede formularse del siguiente modo: \u00bfC\u00f3mo puedo automatizar la actualizaci\u00f3n de una base [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":7304,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"site-sidebar-layout":"default","site-content-layout":"","ast-site-content-layout":"default","site-content-style":"default","site-sidebar-style":"default","ast-global-header-display":"","ast-banner-title-visibility":"","ast-main-header-display":"","ast-hfb-above-header-display":"","ast-hfb-below-header-display":"","ast-hfb-mobile-header-display":"","site-post-title":"","ast-breadcrumbs-content":"","ast-featured-img":"","footer-sml-layout":"","ast-disable-related-posts":"","theme-transparent-header-meta":"default","adv-header-id-meta":"","stick-header-meta":"","header-above-stick-meta":"","header-main-stick-meta":"","header-below-stick-meta":"","astra-migrate-meta-layouts":"default","ast-page-background-enabled":"default","ast-page-background-meta":{"desktop":{"background-color":"var(--ast-global-color-4)","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""},"tablet":{"background-color":"","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""},"mobile":{"background-color":"","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""}},"ast-content-background-meta":{"desktop":{"background-color":"var(--ast-global-color-5)","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""},"tablet":{"background-color":"var(--ast-global-color-5)","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""},"mobile":{"background-color":"var(--ast-global-color-5)","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""}},"footnotes":""},"categories":[128],"tags":[],"class_list":["post-7296","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-novedades-tecnologicas"],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v26.8 - https:\/\/yoast.com\/product\/yoast-seo-wordpress\/ -->\n<title>Liquibase + JPA Buddy: Una combinaci\u00f3n ganadora - AIknow<\/title>\n<meta name=\"description\" content=\"Un problema habitual en muchos proyectos y marcos de trabajo es la gesti\u00f3n de los cambios en la estructura de la base de datos durante la vida del proyecto.\" \/>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/www.aiknow.io\/es\/liquibase-jpa-buddy-una-combinacion-ganadora\/\" \/>\n<meta property=\"og:locale\" content=\"es_ES\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Liquibase + JPA Buddy: Una combinaci\u00f3n ganadora - AIknow\" \/>\n<meta property=\"og:description\" content=\"Un problema habitual en muchos proyectos y marcos de trabajo es la gesti\u00f3n de los cambios en la estructura de la base de datos durante la vida del proyecto.\" \/>\n<meta property=\"og:url\" content=\"https:\/\/www.aiknow.io\/es\/liquibase-jpa-buddy-una-combinacion-ganadora\/\" \/>\n<meta property=\"og:site_name\" content=\"AIknow\" \/>\n<meta property=\"article:published_time\" content=\"2025-08-21T11:40:14+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/www.aiknow.io\/wpvt\/wp-content\/uploads\/2024\/06\/aiknow-liquibase-jpa-buddy-logo.jpg\" \/>\n\t<meta property=\"og:image:width\" content=\"800\" \/>\n\t<meta property=\"og:image:height\" content=\"800\" \/>\n\t<meta property=\"og:image:type\" content=\"image\/jpeg\" \/>\n<meta name=\"author\" content=\"Angelo Lazzari\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"Written by\" \/>\n\t<meta name=\"twitter:data1\" content=\"Angelo Lazzari\" \/>\n\t<meta name=\"twitter:label2\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data2\" content=\"3 minutes\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\/\/www.aiknow.io\/es\/liquibase-jpa-buddy-una-combinacion-ganadora\/#article\",\"isPartOf\":{\"@id\":\"https:\/\/www.aiknow.io\/es\/liquibase-jpa-buddy-una-combinacion-ganadora\/\"},\"author\":{\"name\":\"Angelo Lazzari\",\"@id\":\"https:\/\/www.aiknow.io\/#\/schema\/person\/c0e4c357cf11bfbe3d06457f01e56330\"},\"headline\":\"Liquibase + JPA Buddy: una combinaci\u00f3n ganadora\",\"datePublished\":\"2025-08-21T11:40:14+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\/\/www.aiknow.io\/es\/liquibase-jpa-buddy-una-combinacion-ganadora\/\"},\"wordCount\":655,\"image\":{\"@id\":\"https:\/\/www.aiknow.io\/es\/liquibase-jpa-buddy-una-combinacion-ganadora\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/www.aiknow.io\/wpvt\/wp-content\/uploads\/2024\/06\/aiknow-liquibase-jpa-buddy-logo.jpg\",\"articleSection\":[\"Novedades tecnol\u00f3gicas\"],\"inLanguage\":\"es-ES\"},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/www.aiknow.io\/es\/liquibase-jpa-buddy-una-combinacion-ganadora\/\",\"url\":\"https:\/\/www.aiknow.io\/es\/liquibase-jpa-buddy-una-combinacion-ganadora\/\",\"name\":\"Liquibase + JPA Buddy: Una combinaci\u00f3n ganadora - AIknow\",\"isPartOf\":{\"@id\":\"https:\/\/www.aiknow.io\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\/\/www.aiknow.io\/es\/liquibase-jpa-buddy-una-combinacion-ganadora\/#primaryimage\"},\"image\":{\"@id\":\"https:\/\/www.aiknow.io\/es\/liquibase-jpa-buddy-una-combinacion-ganadora\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/www.aiknow.io\/wpvt\/wp-content\/uploads\/2024\/06\/aiknow-liquibase-jpa-buddy-logo.jpg\",\"datePublished\":\"2025-08-21T11:40:14+00:00\",\"author\":{\"@id\":\"https:\/\/www.aiknow.io\/#\/schema\/person\/c0e4c357cf11bfbe3d06457f01e56330\"},\"description\":\"Un problema habitual en muchos proyectos y marcos de trabajo es la gesti\u00f3n de los cambios en la estructura de la base de datos durante la vida del proyecto.\",\"breadcrumb\":{\"@id\":\"https:\/\/www.aiknow.io\/es\/liquibase-jpa-buddy-una-combinacion-ganadora\/#breadcrumb\"},\"inLanguage\":\"es-ES\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/www.aiknow.io\/es\/liquibase-jpa-buddy-una-combinacion-ganadora\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"es-ES\",\"@id\":\"https:\/\/www.aiknow.io\/es\/liquibase-jpa-buddy-una-combinacion-ganadora\/#primaryimage\",\"url\":\"https:\/\/www.aiknow.io\/wpvt\/wp-content\/uploads\/2024\/06\/aiknow-liquibase-jpa-buddy-logo.jpg\",\"contentUrl\":\"https:\/\/www.aiknow.io\/wpvt\/wp-content\/uploads\/2024\/06\/aiknow-liquibase-jpa-buddy-logo.jpg\",\"width\":800,\"height\":800},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/www.aiknow.io\/es\/liquibase-jpa-buddy-una-combinacion-ganadora\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\/\/www.aiknow.io\/es\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Liquibase + JPA Buddy: una combinaci\u00f3n ganadora\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\/\/www.aiknow.io\/#website\",\"url\":\"https:\/\/www.aiknow.io\/\",\"name\":\"AIknow - Developing future\",\"description\":\"From Edge To Intelligence\",\"alternateName\":\"AIknow\",\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\/\/www.aiknow.io\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"es-ES\"},{\"@type\":\"Person\",\"@id\":\"https:\/\/www.aiknow.io\/#\/schema\/person\/c0e4c357cf11bfbe3d06457f01e56330\",\"name\":\"Angelo Lazzari\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"es-ES\",\"@id\":\"https:\/\/www.aiknow.io\/#\/schema\/person\/image\/\",\"url\":\"https:\/\/secure.gravatar.com\/avatar\/73911066d673686613427bebead5a60c01979853c9864201f1190d35e7bc2018?s=96&d=mm&r=g\",\"contentUrl\":\"https:\/\/secure.gravatar.com\/avatar\/73911066d673686613427bebead5a60c01979853c9864201f1190d35e7bc2018?s=96&d=mm&r=g\",\"caption\":\"Angelo Lazzari\"}}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"Liquibase + JPA Buddy: Una combinaci\u00f3n ganadora - AIknow","description":"Un problema habitual en muchos proyectos y marcos de trabajo es la gesti\u00f3n de los cambios en la estructura de la base de datos durante la vida del proyecto.","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/www.aiknow.io\/es\/liquibase-jpa-buddy-una-combinacion-ganadora\/","og_locale":"es_ES","og_type":"article","og_title":"Liquibase + JPA Buddy: Una combinaci\u00f3n ganadora - AIknow","og_description":"Un problema habitual en muchos proyectos y marcos de trabajo es la gesti\u00f3n de los cambios en la estructura de la base de datos durante la vida del proyecto.","og_url":"https:\/\/www.aiknow.io\/es\/liquibase-jpa-buddy-una-combinacion-ganadora\/","og_site_name":"AIknow","article_published_time":"2025-08-21T11:40:14+00:00","og_image":[{"width":800,"height":800,"url":"https:\/\/www.aiknow.io\/wpvt\/wp-content\/uploads\/2024\/06\/aiknow-liquibase-jpa-buddy-logo.jpg","type":"image\/jpeg"}],"author":"Angelo Lazzari","twitter_card":"summary_large_image","twitter_misc":{"Written by":"Angelo Lazzari","Est. reading time":"3 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/www.aiknow.io\/es\/liquibase-jpa-buddy-una-combinacion-ganadora\/#article","isPartOf":{"@id":"https:\/\/www.aiknow.io\/es\/liquibase-jpa-buddy-una-combinacion-ganadora\/"},"author":{"name":"Angelo Lazzari","@id":"https:\/\/www.aiknow.io\/#\/schema\/person\/c0e4c357cf11bfbe3d06457f01e56330"},"headline":"Liquibase + JPA Buddy: una combinaci\u00f3n ganadora","datePublished":"2025-08-21T11:40:14+00:00","mainEntityOfPage":{"@id":"https:\/\/www.aiknow.io\/es\/liquibase-jpa-buddy-una-combinacion-ganadora\/"},"wordCount":655,"image":{"@id":"https:\/\/www.aiknow.io\/es\/liquibase-jpa-buddy-una-combinacion-ganadora\/#primaryimage"},"thumbnailUrl":"https:\/\/www.aiknow.io\/wpvt\/wp-content\/uploads\/2024\/06\/aiknow-liquibase-jpa-buddy-logo.jpg","articleSection":["Novedades tecnol\u00f3gicas"],"inLanguage":"es-ES"},{"@type":"WebPage","@id":"https:\/\/www.aiknow.io\/es\/liquibase-jpa-buddy-una-combinacion-ganadora\/","url":"https:\/\/www.aiknow.io\/es\/liquibase-jpa-buddy-una-combinacion-ganadora\/","name":"Liquibase + JPA Buddy: Una combinaci\u00f3n ganadora - AIknow","isPartOf":{"@id":"https:\/\/www.aiknow.io\/#website"},"primaryImageOfPage":{"@id":"https:\/\/www.aiknow.io\/es\/liquibase-jpa-buddy-una-combinacion-ganadora\/#primaryimage"},"image":{"@id":"https:\/\/www.aiknow.io\/es\/liquibase-jpa-buddy-una-combinacion-ganadora\/#primaryimage"},"thumbnailUrl":"https:\/\/www.aiknow.io\/wpvt\/wp-content\/uploads\/2024\/06\/aiknow-liquibase-jpa-buddy-logo.jpg","datePublished":"2025-08-21T11:40:14+00:00","author":{"@id":"https:\/\/www.aiknow.io\/#\/schema\/person\/c0e4c357cf11bfbe3d06457f01e56330"},"description":"Un problema habitual en muchos proyectos y marcos de trabajo es la gesti\u00f3n de los cambios en la estructura de la base de datos durante la vida del proyecto.","breadcrumb":{"@id":"https:\/\/www.aiknow.io\/es\/liquibase-jpa-buddy-una-combinacion-ganadora\/#breadcrumb"},"inLanguage":"es-ES","potentialAction":[{"@type":"ReadAction","target":["https:\/\/www.aiknow.io\/es\/liquibase-jpa-buddy-una-combinacion-ganadora\/"]}]},{"@type":"ImageObject","inLanguage":"es-ES","@id":"https:\/\/www.aiknow.io\/es\/liquibase-jpa-buddy-una-combinacion-ganadora\/#primaryimage","url":"https:\/\/www.aiknow.io\/wpvt\/wp-content\/uploads\/2024\/06\/aiknow-liquibase-jpa-buddy-logo.jpg","contentUrl":"https:\/\/www.aiknow.io\/wpvt\/wp-content\/uploads\/2024\/06\/aiknow-liquibase-jpa-buddy-logo.jpg","width":800,"height":800},{"@type":"BreadcrumbList","@id":"https:\/\/www.aiknow.io\/es\/liquibase-jpa-buddy-una-combinacion-ganadora\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/www.aiknow.io\/es\/"},{"@type":"ListItem","position":2,"name":"Liquibase + JPA Buddy: una combinaci\u00f3n ganadora"}]},{"@type":"WebSite","@id":"https:\/\/www.aiknow.io\/#website","url":"https:\/\/www.aiknow.io\/","name":"AIknow - Developing future","description":"From Edge To Intelligence","alternateName":"AIknow","potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/www.aiknow.io\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"es-ES"},{"@type":"Person","@id":"https:\/\/www.aiknow.io\/#\/schema\/person\/c0e4c357cf11bfbe3d06457f01e56330","name":"Angelo Lazzari","image":{"@type":"ImageObject","inLanguage":"es-ES","@id":"https:\/\/www.aiknow.io\/#\/schema\/person\/image\/","url":"https:\/\/secure.gravatar.com\/avatar\/73911066d673686613427bebead5a60c01979853c9864201f1190d35e7bc2018?s=96&d=mm&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/73911066d673686613427bebead5a60c01979853c9864201f1190d35e7bc2018?s=96&d=mm&r=g","caption":"Angelo Lazzari"}}]}},"_links":{"self":[{"href":"https:\/\/www.aiknow.io\/es\/wp-json\/wp\/v2\/posts\/7296","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.aiknow.io\/es\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.aiknow.io\/es\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.aiknow.io\/es\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.aiknow.io\/es\/wp-json\/wp\/v2\/comments?post=7296"}],"version-history":[{"count":0,"href":"https:\/\/www.aiknow.io\/es\/wp-json\/wp\/v2\/posts\/7296\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.aiknow.io\/es\/wp-json\/wp\/v2\/media\/7304"}],"wp:attachment":[{"href":"https:\/\/www.aiknow.io\/es\/wp-json\/wp\/v2\/media?parent=7296"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.aiknow.io\/es\/wp-json\/wp\/v2\/categories?post=7296"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.aiknow.io\/es\/wp-json\/wp\/v2\/tags?post=7296"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}