প্রোডাকশনের জন্য ইনিশিয়াল স্কিমা জেনারেট করা : লিকুইবেস স্প্রিং হাইবারনেট - ২

পূর্বশর্ত: ডেভেলপমেন্ট মোডে ইনিশিয়াল ডাটা লোড করা: লিকুইবেস স্প্রিং হাইবারনেট - ১ পড়ে আসতে হবে।


প্রোডাকশনের জন্য আপনার স্কিমা লাগবে, তাই না? যদি ডেভেলপমেন্টের ডাটাবেস থেকে স্কিমা ডাম্প নেয়ার চেষ্টা করেন, তাহলে কাজ করবে কিন্তু ফরেন কি অনুসারে টেবিল সাজাতে হবে। আর হাতে ধরে ধরে স্কিমা লিখে ফেললে তো কোন কথাই নাই, সুপারম্যান আপনি।আর যদি অন্য কোন উপায় না থাকে, তাহালে এই কাজটা একদম সহজে লিকুইবেস করে ফেলতে পারে। আগের আর্টিকেলে যে সব সেটিং দেখিয়েছি সেগুলা ঠিক ঠাক থাকলে, নিচের কমান্ড দিন

mvn liquibase:generateChangeLog


দেখবেন, নিচের লোকেশনে আপনার প্রোডাকশন স্কিমা তৈরী হয়ে গেছে।

src/main/resources/liquibase/generated/liquibase-changeLog.mysql.sql



কিভাবে এই স্কিমা প্রোডাকশনে ব্যবহার করবো?


১. নিচের মতো করে application-stage.properties পরিবর্তন করুন

spring.datasource.url=jdbc:mysql://localhost:3306/blog_db?createDatabaseIfNotExist=true&useUnicode=yes&characterEncoding=UTF-8

# ===============================
# = JPA / HIBERNATE
# ===============================
spring.jpa.hibernate.ddl-auto=none

# ===============================
# = LIQUIBASE
# ===============================
spring.liquibase.enabled=true
spring.liquibase.change-log=classpath:/liquibase/changelog/changelog-prod.xml

application-prod.properties


একটা changelog-prod.xml লিখে ফেলুন

<?xml version="1.0" encoding="UTF-8"?>
<databaseChangeLog
        xmlns="http://www.liquibase.org/xml/ns/dbchangelog/1.9"
        xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
        xsi:schemaLocation="http://www.liquibase.org/xml/ns/dbchangelog/1.9
         http://www.liquibase.org/xml/ns/dbchangelog/dbchangelog-1.9.xsd">
    <include file="prod/changelog-schema-1.0.0.sql"         relativeToChangelogFile="true"/>
</databaseChangeLog>

changelog-prod.xml


এখন liquibase-changeLog.mysql.sql ফাইল থেকে sql কপি করে এখানে পেস্ট করে দেন

--liquibase formatted sql

--changeset maruf:1558952962098-1
CREATE TABLE AUTHOR (id VARCHAR(32) NOT NULL, description VARCHAR(255) NULL, email VARCHAR(255) NOT NULL, firstName VARCHAR(255) NULL, lastName VARCHAR(255) NULL, image_id VARCHAR(32) NULL);

--changeset maruf:1558952962098-2
CREATE TABLE FILE_META (id VARCHAR(32) NOT NULL, contentType VARCHAR(255) NULL, context VARCHAR(255) NULL, description VARCHAR(255) NULL, displayName VARCHAR(255) NULL, fileName VARCHAR(255) NULL, size BIGINT NULL, thumbName VARCHAR(255) NULL, title VARCHAR(255) NULL);
...................................

changelog-schema-1.0.0.sql


ব্যাস। এখন নিচের কমান্ড দিলে লিকুইবেস সরাসরি স্কিমা ডাটাবেসে যুক্ত করে দেবে

mvn spring-boot:run -Dspring-boot.run.profiles=stage



পরবর্তী পর্বে দেখবো কিভাবে ডেল্টা sql জেনারেট করা যায়।