Spring Framework ডাটাবেস ইনিশিয়ালাইজেশনের জন্য schema.sql এবং data.sql ফাইল সরবরাহ করার সুবিধা প্রদান করে। এই ফাইলগুলো স্বয়ংক্রিয়ভাবে অ্যাপ্লিকেশন চালানোর সময় Spring JDBC-এর মাধ্যমে ডাটাবেস ইনিশিয়ালাইজ করতে ব্যবহার করা হয়।
কীভাবে কাজ করে?
schema.sql:- এটি ডাটাবেসের স্কিমা (টেবিল, ইন্ডেক্স, কনস্ট্রেইন্ট ইত্যাদি) তৈরি করতে ব্যবহৃত হয়।
- সাধারণত টেবিল তৈরি এবং ডাটাবেস স্ট্রাকচার ডিফাইন করার জন্য ব্যবহৃত হয়।
data.sql:- এটি ডাটাবেসে প্রাথমিক ডাটা ইনসার্ট করতে ব্যবহৃত হয়।
- সাধারণত ডিফল্ট বা পরীক্ষার ডেটা যোগ করার জন্য ব্যবহৃত হয়।
ব্যবহারের ধাপসমূহ:
1. schema.sql এবং data.sql ফাইল তৈরি করা
schema.sql: ডাটাবেস স্কিমা তৈরি করার জন্য SQL কমান্ড লিখুন।
-- schema.sql
CREATE TABLE employees (
id INT AUTO_INCREMENT PRIMARY KEY,
name VARCHAR(100) NOT NULL,
department VARCHAR(50),
salary DECIMAL(10, 2)
);
CREATE TABLE department_stats (
department VARCHAR(50) PRIMARY KEY,
employee_count INT
);
data.sql: ডাটাবেসে প্রাথমিক ডাটা ইনসার্ট করার জন্য SQL কমান্ড লিখুন।
-- data.sql
INSERT INTO employees (name, department, salary) VALUES ('John Doe', 'HR', 50000);
INSERT INTO employees (name, department, salary) VALUES ('Jane Smith', 'IT', 60000);
INSERT INTO department_stats (department, employee_count) VALUES ('HR', 1);
INSERT INTO department_stats (department, employee_count) VALUES ('IT', 1);
2. ফাইলগুলো resources ফোল্ডারে সংরক্ষণ করুন
Spring Framework resources ফোল্ডারের মধ্যে থাকা schema.sql এবং data.sql ফাইলগুলো স্বয়ংক্রিয়ভাবে খুঁজে পায় এবং সেগুলো কার্যকর করে।
src/main/resources/
├── schema.sql
├── data.sql
Spring Boot এ Database Initialization সক্রিয় করা
Spring Boot-এ, ডাটাবেস ইনিশিয়ালাইজেশন স্বয়ংক্রিয়ভাবে সক্রিয় থাকে। তবে কনফিগারেশন যাচাই করতে নিম্নোক্ত সেটিংস চেক করুন:
application.properties ফাইলে কনফিগারেশন যোগ করা
spring.datasource.url=jdbc:h2:mem:testdb
spring.datasource.username=sa
spring.datasource.password=
spring.datasource.driver-class-name=org.h2.Driver
# Enable SQL initialization
spring.sql.init.mode=always
spring.sql.init.mode-এর মান
always: প্রতিবার অ্যাপ্লিকেশন চালানোর সময় ডাটাবেস ইনিশিয়ালাইজ করে।embedded: শুধুমাত্র এম্বেডেড ডাটাবেসের (যেমন H2, HSQLDB) ক্ষেত্রে ইনিশিয়ালাইজ করে।never: SQL ইনিশিয়ালাইজেশন বন্ধ রাখে।
Database Initialization-এর নিয়ম
schema.sqlপ্রথমে কার্যকর হয়, এরপরdata.sql।- যদি আপনি Spring Boot-এর
spring.jpa.hibernate.ddl-autoসেটিং ব্যবহার করেন (যেমনcreateবাupdate), তখনschema.sqlপ্রয়োজন হয় না কারণ Hibernate নিজেই টেবিল তৈরি করতে পারে।
প্রসঙ্গ: H2 Database এর সাথে উদাহরণ
pom.xml-এ H2 ডাটাবেস ডিপেনডেন্সি যোগ করুন:
<dependency>
<groupId>com.h2database</groupId>
<artifactId>h2</artifactId>
<scope>runtime</scope>
</dependency>
application.properties ফাইল:
spring.datasource.url=jdbc:h2:mem:testdb
spring.datasource.driver-class-name=org.h2.Driver
spring.datasource.username=sa
spring.datasource.password=
spring.sql.init.mode=always
অ্যাপ্লিকেশন চালানোর পর কাজটি কেমন দেখাবে:
schema.sql: টেবিল তৈরি করবে।data.sql: টেবিলে ডাটা ইনসার্ট করবে।- H2 কনসোল (
http://localhost:8080/h2-console) থেকে ডাটাবেস পরীক্ষা করা যাবে।
কাস্টম SQL ফাইল নামকরণ (Optional)
Spring Framework ডিফল্টভাবে schema.sql এবং data.sql ফাইলগুলো খুঁজে। আপনি কাস্টম ফাইল নাম ব্যবহার করতে চাইলে, নিচের প্রোপার্টি ব্যবহার করতে পারেন:
spring.sql.init.schema-locations=classpath:/custom-schema.sql
spring.sql.init.data-locations=classpath:/custom-data.sql
উপকারিতা:
- সহজ ডাটাবেস সেটআপ:
- অ্যাপ্লিকেশন ডাটাবেস তৈরি এবং প্রাথমিক ডাটা লোড করার জন্য ম্যানুয়াল কাজ হ্রাস করে।
- পরীক্ষার সুবিধা:
- টেস্ট ডেটাবেস দ্রুত ইনিশিয়ালাইজ করা যায়।
- স্বয়ংক্রিয়তা:
- ডেভেলপমেন্ট এবং টেস্টিং উভয়ের জন্য স্বয়ংক্রিয় স্কিমা ও ডাটা লোড নিশ্চিত করে।
উপসংহার:
Spring JDBC-তে schema.sql এবং data.sql ফাইল ব্যবহার করে ডাটাবেস ইনিশিয়ালাইজেশন একটি সহজ এবং কার্যকর পদ্ধতি। এটি ডেভেলপমেন্ট এবং টেস্টিং-এর সময় প্রচুর সময় বাঁচায় এবং অ্যাপ্লিকেশনের ডাটাবেস স্ট্রাকচার ও ডেটার ধারাবাহিকতা নিশ্চিত করে।
Read more