This is a Liquibase extension for connecting to Hibernate. The extension lets you use your Hibernate configuration as a comparison database for diff, diffChangeLog, and generateChangeLog in Liquibase.
Configuring the extension
These instructions will help you get the extension up and running on your local machine for development and testing purposes. This extension has a prerequisite of Liquibase core in order to use it. Liquibase core can be found at https://www.liquibase.org/download.
Compatiblity
The Liquibase Hibernate extension requires Liquibase 3.0.6+ and Java 1.6+. Use liquibase-hibernate3.jar or liquibase-hibernate4.jar depending on your Hibernate version.
This extension can be used with any method of running Liquibase (Command line, Gradle, Maven, Ant, and others.)
This extension is available in the maven repository under group org.liquibase.ext, artifacts:
liquibase-hibernate5 Hibernate 5.0+ support
liquibase-hibernate4 Hibernate 4.3+ support
liquibase-hibernate4.2 Hibernate 4.0-4.2 support
liquibase-hibernate3 Hibernate 3.x support
Specify the Liquibase extension in the <dependency> section of your POM file by adding the org.liquibase.ext dependency for the Liquibase plugin.
<plugin>
<!--start with basic information to get Liquibase plugin:
include <groupId>, <artifactID>, and <version> elements-->
<groupId>org.liquibase</groupId>
<artifactId>liquibase-maven-plugin</artifactId>
<version>4.3.2</version>
<configuration>
<!--set values for Liquibase properties and settings
for example, the location of a properties file to use-->
<propertyFile>liquibase.properties</propertyFile>
</configuration>
<dependencies>
<!--set up any dependencies for Liquibase to function in your
environment for example, a database-specific plugin-->
<dependency>
<groupId>org.liquibase.ext</groupId>
<artifactId>liquibase-hibernate</artifactId>
<version>${liquibase-hibernate.version}</version>
</dependency>
</dependencies>
</plugin>
The master branch is Hibernate 5+ compatible.
The hibernate4 branch is Hibernate 4.3+ compatible.
For Hibernate 3 support, use the hibernate3 release and/or branch.
For hibernate 4.0-4.2 support, use the hibernate4.2 release and/or branch.
Ideally changes should go into the hibernate3 branch and then be merged into master in order to support both Hibernate 3 and 4.
The HibernateDiffCommandTest class extends the DiffCommandTest class from Test Harness and utilizes the ability to check differences between two databases.
As Hibernate is not a Relational database, this is our method of checking that database objects generated/updated by the Liquibase Hibernate extension against a database have the correct attributes.
In general the DiffCommandTest works by utilizing the Liquibase diff command to check
differences between two databases, then it creates a changelog file based on diff, then it applies these changes to the target database and checks the diff again.
There still could be some differences afterwards as different DBs support different features, so while checking diffs again the test will ignore diffs that are expected.
Configurations for this test are hosted in 2 files:
src/test/resources/harness-config.yml -- this is a general config file for Test Harness where DB connection details are specified.
src/test/resources/liquibase/harness/diff/diffDatabases.yml -- this file specifies which DBs should be compared and what the diffs are expected even after we try to bring the target DB to same state as the reference DB.
The DiffCommandTest will take all pairs of targetDB-referenceDB from diffDatabases.yml . The test also takes the *.cfg.xml configuration files into consideration. And then the paths to these config files work as the DB connection URLs in the harness-config.yml file.
请发表评论