Giriş
Liquibase daha çok SpringBoot ile kullanılıyor ancak tek başına kullanım da mümkün. Bir örnek buradaGradle
Şöyle yaparız
plugins {id 'org.liquibase.gradle' version '2.1.1' } dependencies { liquibaseRuntime group: 'org.liquibase', name: 'liquibase-core', version: '4.2.2' liquibaseRuntime group: 'com.microsoft.sqlserver', name: 'mssql-jdbc', version: '10.2.0.jre11' }
build.gradle dosyasında şöyle yaparız
liquibase { activities { def liquibaseUrl = project.hasProperty('liquibaseUrl') ? liquibaseUrl : null def liquibaseUsername = project.hasProperty('liquibaseUsername') ? liquibaseUsername : null def liquibasePassword = project.hasProperty('liquibasePassword') ? liquibasePassword : null main { changeLogFile 'change-log.sql' url liquibaseUrl username liquibaseUsername password liquibasePassword } } }
Çalıştırmak için şöyle yaparız
./gradlew update -PliquibaseUrl="<jdbc-connection-string>" -PliquibaseUsername="<jdbc-username>" -PliquibasePassword="<jdbc-password>"
ChangeLog Nedir?
Açıklaması şöyle. Yani changeset dosyalarını içeren ana dosyadır
A Liquibase changelog is typically a file that contains a list of changesets. A changeset is a group of database changes that are intended to be applied together as a unit. Each changeset includes the details of the changes to be made, such as the SQL statements to be executed or the database objects to be created or modified.ChangeLog şu formatlarda olabilir
XMLSQLJSONYAML
ChangeSet Nedir?
Açıklaması şöyle. Liquibase hangi changeset'in uygulandığını takip eder. Dolayısıyla changeset geri sarılabilir.
... liquibase allows developers to define their database changes in a database-agnostic format, so that the exact changelogs can be used to update different database types, such as MySQL, Oracle, or PostgreSQL. This makes it easier to support multiple database platforms and automate the process of applying changes to a database.
Örnek
Şöyle yaparız. Burada bir tablo yaratılıyor ve satır ekleniyor
<?xml version="1.0" encoding="UTF-8"?><databaseChangeLog xmlns="http://www.liquibase.org/xml/ns/dbchangelog" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.liquibase.org/xml/ns/dbchangelog http://www.liquibase.org/xml/ns/dbchangelog/dbchangelog-3.8.xsd"> <changeSet id="create-table" author="liquibase"> <createTable tableName="my_table"> <column name="id" type="int" autoIncrement="true"/> <column name="name" type="varchar(255)"/> <column name="description" type="varchar(255)"/> </createTable> </changeSet> <changeSet id="insert-row" author="liquibase"> <insert tableName="my_table"> <column name="name" value="Example name"/> <column name="description" value="Example description"/> </insert> </changeSet> </databaseChangeLog>
Örnek
changeSet tag içinde yapılabilece tablo işlemleri şöyle.
<createTable tableName="customers"> <column name="id" type="int" autoIncrement="true"> <constraints primaryKey="true" nullable="false"/> </column> <column name="name" type="varchar(255)"/> <column name="email" type="varchar(255)"/> <column name="created_at" type="timestamp" defaultValueComputed="CURRENT_TIMESTAMP"/> </createTable> <addColumn tableName="customers"> <column name="address" type="varchar(255)"/> </addColumn> <modifyDataType tableName="customers" columnName="name" newDataType="varchar(100)"/> <insert tableName="customers"> <column name="name" value="John Smith"/> <column name="email" value="john@example.com"/> </insert> <update tableName="customers" where="email = 'john@example.com'"> <column name="name" value="John Doe"/> </update> <delete tableName="customers" where="email = 'john@example.com'"/>
changeSet tag içinde yapılabilecek view işlemleri şöyle.
<createView viewName="customer_names"> SELECT name FROM customers; </createView> <dropView viewName="customer_names"/>
changeSet tag içinde yapılabilecek stored procedure ve trigger işlemleri şöyle.
<createProcedure procedureName="get_customer_by_id"> CREATE PROCEDURE get_customer_by_id(IN customer_id INT) BEGIN SELECT * FROM customers WHERE id = customer_id; END </createProcedure> <dropProcedure procedureName="get_customer_by_id"/> <createTrigger triggerName="customer_insert_trigger" beforeInsert="true" tableName="customers">
SQL
Örnek
Şöyle yaparız
--liquibase formatted sql--changeset user1:id1CREATE TABLE Car (id INT PRIMARY KEY,make VARCHAR(100));
Örnek
Şöyle yaparız. Burada bir tablo yaratılıyor ve satır ekleniyor
--liquibase formatted sql --changeset liquibase:create-table CREATE TABLE my_table ( id INT AUTO_INCREMENT PRIMARY KEY, name VARCHAR(255), description VARCHAR(255) ); --changeset liquibase:insert-row INSERT INTO my_table (name, description) VALUES ('Example name', 'Example description');
JSON
Örnek
Şöyle yaparız. Burada bir tablo yaratılıyor ve satır ekleniyor
{ "databaseChangeLog": { "changeSet": [ { "id": "create-table", "author": "liquibase", "createTable": { "tableName": "my_table", "column": [ { "name": "id", "type": "int", "autoIncrement": true }, { "name": "name", "type": "varchar(255)" }, { "name": "description", "type": "varchar(255)" } ] } }, { "id": "insert-row", "author": "liquibase", "insert": { "tableName": "my_table", "column": [ { "name": "name", "value": "Example name" }, { "name": "description", "value": "Example description" } ] } } ] } }
YAML
Örnek
Şöyle yaparız. Burada bir tablo yaratılıyor ve satır ekleniyor
databaseChangeLog: changeSet: - id: create-table author: liquibase createTable: tableName: my_table column: - name: id type: int autoIncrement: true - name: name type: varchar(255) - name: description type: varchar(255) - id: insert-row author: liquibase insert: tableName: my_table column: - name: name value: Example name - name: description value: Example description
Hiç yorum yok:
Yorum Gönder