Spring JDBC এবং SQL Script Integration

Java Technologies - স্প্রিং জেডিবিসি (Spring JDBC)
109
109

Spring JDBC-তে SQL Script Integration ব্যবহার করে আপনি ডেটাবেসে SQL স্ক্রিপ্ট রান করতে পারেন। এটি বিশেষত দরকারি হয় যখন আপনাকে ডেটাবেস টেবিল তৈরি, ডেটা ইনসার্ট বা অন্য কনফিগারেশন স্ক্রিপ্ট চালাতে হয়।

Spring Framework-এ SQL স্ক্রিপ্ট চালানোর জন্য ResourceDatabasePopulator এবং JdbcTemplate ব্যবহার করা যেতে পারে। এছাড়া, আপনি schema.sql বা data.sql ফাইল সরাসরি ব্যবহার করতে পারেন।


SQL Script Integration এর ধাপসমূহ:

১. Maven Dependency যোগ করুন

<dependency>
    <groupId>org.springframework</groupId>
    <artifactId>spring-jdbc</artifactId>
    <version>5.3.11</version>
</dependency>
<dependency>
    <groupId>mysql</groupId>
    <artifactId>mysql-connector-java</artifactId>
    <version>8.0.29</version>
</dependency>

২. SQL স্ক্রিপ্ট তৈরি করুন

SQL স্ক্রিপ্ট ফাইল তৈরি করুন যা ডাটাবেস টেবিল তৈরি ও ডেটা ইনসার্ট করতে পারে।

schema.sql:
CREATE TABLE IF NOT EXISTS users (
    id INT AUTO_INCREMENT PRIMARY KEY,
    name VARCHAR(50),
    email VARCHAR(50)
);
data.sql:
INSERT INTO users (name, email) VALUES ('John Doe', 'john@example.com');
INSERT INTO users (name, email) VALUES ('Jane Smith', 'jane@example.com');

৩. Spring JDBC দিয়ে SQL স্ক্রিপ্ট চালানো

ResourceDatabasePopulator ব্যবহার:
import org.springframework.jdbc.datasource.DriverManagerDataSource;
import org.springframework.jdbc.datasource.init.ResourceDatabasePopulator;
import org.springframework.core.io.ClassPathResource;

import javax.sql.DataSource;

public class SqlScriptIntegrationExample {
    public static void main(String[] args) {
        // DataSource Configuration
        DriverManagerDataSource dataSource = new DriverManagerDataSource();
        dataSource.setDriverClassName("com.mysql.cj.jdbc.Driver");
        dataSource.setUrl("jdbc:mysql://localhost:3306/your_database");
        dataSource.setUsername("your_username");
        dataSource.setPassword("your_password");

        // ResourceDatabasePopulator
        ResourceDatabasePopulator databasePopulator = new ResourceDatabasePopulator();
        databasePopulator.addScript(new ClassPathResource("schema.sql"));
        databasePopulator.addScript(new ClassPathResource("data.sql"));

        // Execute SQL scripts
        databasePopulator.execute(dataSource);

        System.out.println("SQL scripts executed successfully.");
    }
}

৪. JdbcTemplate দিয়ে SQL স্ক্রিপ্ট চালানো

JdbcTemplate ব্যবহার:
import org.springframework.jdbc.core.JdbcTemplate;
import org.springframework.jdbc.datasource.DriverManagerDataSource;

import java.nio.file.Files;
import java.nio.file.Paths;

public class SqlScriptWithJdbcTemplateExample {
    public static void main(String[] args) throws Exception {
        // DataSource Configuration
        DriverManagerDataSource dataSource = new DriverManagerDataSource();
        dataSource.setDriverClassName("com.mysql.cj.jdbc.Driver");
        dataSource.setUrl("jdbc:mysql://localhost:3306/your_database");
        dataSource.setUsername("your_username");
        dataSource.setPassword("your_password");

        JdbcTemplate jdbcTemplate = new JdbcTemplate(dataSource);

        // Read schema.sql and data.sql as strings
        String schemaScript = new String(Files.readAllBytes(Paths.get("src/main/resources/schema.sql")));
        String dataScript = new String(Files.readAllBytes(Paths.get("src/main/resources/data.sql")));

        // Execute scripts
        jdbcTemplate.execute(schemaScript);
        jdbcTemplate.execute(dataScript);

        System.out.println("SQL scripts executed successfully using JdbcTemplate.");
    }
}

৫. Spring Boot এ স্বয়ংক্রিয় স্ক্রিপ্ট লোডিং

Spring Boot এ আপনি সরাসরি schema.sql এবং data.sql ফাইল ব্যবহার করতে পারেন। Spring Boot স্বয়ংক্রিয়ভাবে এই স্ক্রিপ্টগুলো চালাবে।

schema.sql এবং data.sql ফাইলের অবস্থান:
src/main/resources/schema.sql
src/main/resources/data.sql
application.properties কনফিগারেশন:
spring.datasource.url=jdbc:mysql://localhost:3306/your_database
spring.datasource.username=your_username
spring.datasource.password=your_password
spring.datasource.initialization-mode=always

Spring Boot স্টার্ট আপ হলে, এটি স্বয়ংক্রিয়ভাবে schema.sql এবং data.sql ফাইল এক্সিকিউট করবে।


Spring JDBC এবং SQL Script Integration এর সুবিধা:

  1. অটোমেশন: SQL স্ক্রিপ্ট স্বয়ংক্রিয়ভাবে লোড এবং চালানো যায়।
  2. সহজতা: ResourceDatabasePopulator এবং JdbcTemplate ব্যবহার করে সহজে স্ক্রিপ্ট চালানো যায়।
  3. রিবাসিবল: SQL স্ক্রিপ্ট পৃথক ফাইল আকারে রাখা হয়, যা সহজে সংস্করণ নিয়ন্ত্রণ করা যায়।
  4. Spring Boot সমর্থন: schema.sql এবং data.sql স্বয়ংক্রিয়ভাবে চালানোর সুবিধা দেয়।

আপনার প্রজেক্টে SQL স্ক্রিপ্ট ইন্টিগ্রেশন সহজ এবং কার্যকর করার জন্য Spring JDBC-এর এই পদ্ধতিগুলি ব্যবহার করতে পারেন।

Content added By

Spring JDBC তে SQL Script চালানোর পদ্ধতি

127
127

Spring JDBC ব্যবহার করে ডাটাবেসে SQL Script চালানো একটি সহজ এবং কার্যকর পদ্ধতি। বিশেষ করে, JdbcTemplate বা ResourceDatabasePopulator ব্যবহার করে আপনি SQL স্ক্রিপ্ট এক্সিকিউট করতে পারেন।


SQL Script চালানোর বিভিন্ন পদ্ধতি

  1. JdbcTemplate ব্যবহার করে SQL Script চালানো
  2. ResourceDatabasePopulator ব্যবহার করে SQL Script চালানো

1. JdbcTemplate ব্যবহার করে SQL Script চালানো

উদাহরণ:

import org.springframework.jdbc.core.JdbcTemplate;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;

@Component
public class SQLScriptRunner {

    @Autowired
    private JdbcTemplate jdbcTemplate;

    public void runSQLScript() {
        String sql = "CREATE TABLE IF NOT EXISTS users (id INT AUTO_INCREMENT PRIMARY KEY, name VARCHAR(100), email VARCHAR(100));";
        jdbcTemplate.execute(sql);
        System.out.println("SQL Script executed successfully!");
    }
}
ব্যাখ্যা:
  • jdbcTemplate.execute(sql):
    • SQL স্টেটমেন্ট সরাসরি চালানোর জন্য ব্যবহার করা হয়।
  • এটি ছোট SQL স্ক্রিপ্টের জন্য কার্যকর।

2. ResourceDatabasePopulator ব্যবহার করে SQL Script চালানো

Spring Framework-এর ResourceDatabasePopulator ক্লাস ব্যবহার করে বড় SQL স্ক্রিপ্ট ফাইল চালানো যেতে পারে।

উদাহরণ:

SQL ফাইল: schema.sql
CREATE TABLE IF NOT EXISTS users (
    id INT AUTO_INCREMENT PRIMARY KEY,
    name VARCHAR(100),
    email VARCHAR(100)
);

INSERT INTO users (name, email) VALUES ('John Doe', 'john.doe@example.com');
INSERT INTO users (name, email) VALUES ('Jane Doe', 'jane.doe@example.com');
কোড:
import org.springframework.jdbc.datasource.init.ResourceDatabasePopulator;
import org.springframework.core.io.ClassPathResource;
import org.springframework.stereotype.Component;
import javax.sql.DataSource;

@Component
public class SQLScriptRunner {

    private final DataSource dataSource;

    public SQLScriptRunner(DataSource dataSource) {
        this.dataSource = dataSource;
    }

    public void runSQLScript() {
        ResourceDatabasePopulator resourceDatabasePopulator = new ResourceDatabasePopulator();
        resourceDatabasePopulator.addScript(new ClassPathResource("schema.sql"));

        try {
            resourceDatabasePopulator.execute(dataSource);
            System.out.println("SQL script executed successfully!");
        } catch (Exception e) {
            e.printStackTrace();
            System.err.println("Error executing SQL script.");
        }
    }
}
ব্যাখ্যা:
  1. ResourceDatabasePopulator:
    • এটি একাধিক SQL ফাইল যোগ করতে এবং চালাতে সক্ষম।
  2. addScript(new ClassPathResource("schema.sql")):
    • ক্লাসপাথ থেকে SQL ফাইল লোড করে।
  3. execute(dataSource):
    • DataSource এর মাধ্যমে SQL স্ক্রিপ্ট চালানো হয়।
Maven ডিপেনডেন্সি:
<dependency>
    <groupId>org.springframework</groupId>
    <artifactId>spring-jdbc</artifactId>
    <version>5.3.10</version>
</dependency>

3. Spring Boot এর মাধ্যমে SQL Script চালানো

Spring Boot প্রকল্পে আপনি সরাসরি data.sql বা schema.sql ফাইল ব্যবহার করতে পারেন। Spring Boot অ্যাপ্লিকেশন চালানোর সময় এই ফাইলগুলো অটোমেটিকভাবে চালানো হবে।

উদাহরণ:

schema.sql (ক্লাসপাথে)
CREATE TABLE IF NOT EXISTS users (
    id INT AUTO_INCREMENT PRIMARY KEY,
    name VARCHAR(100),
    email VARCHAR(100)
);
data.sql (ক্লাসপাথে)
INSERT INTO users (name, email) VALUES ('John Doe', 'john.doe@example.com');
INSERT INTO users (name, email) VALUES ('Jane Doe', 'jane.doe@example.com');

Spring Boot অ্যাপ্লিকেশন চালানোর সময়:

Spring Boot schema.sql এবং data.sql ফাইল লোড করবে এবং ডাটাবেসে প্রয়োজনীয় স্ক্রিপ্ট চালাবে।

অ্যাপ্লিকেশন প্রোপার্টিজে (অপশনাল):
spring.sql.init.mode=always
spring.sql.init.schema-locations=classpath:schema.sql
spring.sql.init.data-locations=classpath:data.sql

উপসংহার

Spring JDBC-তে SQL Script চালানোর জন্য বিভিন্ন পদ্ধতি রয়েছে। ছোট স্ক্রিপ্টের জন্য JdbcTemplate ব্যবহার করতে পারেন, আর বড় এবং একাধিক ফাইল পরিচালনার জন্য ResourceDatabasePopulator ব্যবহার করা উত্তম। Spring Boot ব্যবহার করলে schema.sql এবং data.sql ফাইল স্বয়ংক্রিয়ভাবে চালানোর সুবিধা পাওয়া যায়।

Content added By

ResourceDatabasePopulator ব্যবহার করে SQL Script চালানো

87
87

Spring Framework এ ResourceDatabasePopulator একটি সহজ এবং কার্যকর টুল, যা ডেটাবেসে SQL স্ক্রিপ্ট চালানোর জন্য ব্যবহৃত হয়। এটি সাধারণত ডেটাবেস ইনিশিয়ালাইজেশন, টেস্ট ডেটা লোড, বা স্ক্রিপ্ট থেকে টেবিল তৈরির জন্য ব্যবহার করা হয়।


ResourceDatabasePopulator কী?

ResourceDatabasePopulator ক্লাস Spring-এর একটি ইউটিলিটি, যা SQL ফাইল বা স্ক্রিপ্ট চালানোর জন্য ব্যবহৃত হয়। এটি সাধারণত DataSource এর সাথে কাজ করে এবং ডেটাবেসে নির্দিষ্ট SQL কমান্ড (যেমন টেবিল তৈরি, ডেটা ইনসার্ট) কার্যকর করে।


ResourceDatabasePopulator এর সুবিধা

  1. ডেটাবেস ইনিশিয়ালাইজ করার জন্য SQL স্ক্রিপ্ট চালানো সহজ।
  2. একাধিক SQL স্ক্রিপ্ট লোড করার সমর্থন।
  3. ট্রানজেকশনাল সাপোর্ট।
  4. টেস্ট ডেটা লোড করার সময় প্রয়োজনীয়।

ResourceDatabasePopulator ব্যবহার করার ধাপ

১. ডিপেন্ডেন্সি যোগ করা

Spring JDBC এবং ডাটাবেস ড্রাইভার ডিপেন্ডেন্সি নিশ্চিত করুন (যদি Maven ব্যবহার করেন)।

<dependency>
    <groupId>org.springframework</groupId>
    <artifactId>spring-jdbc</artifactId>
    <version>5.3.22</version>
</dependency>

২. SQL স্ক্রিপ্ট তৈরি করা

আপনার SQL স্ক্রিপ্ট একটি .sql ফাইলে সংরক্ষণ করুন। উদাহরণস্বরূপ, schema.sql ফাইল:

CREATE TABLE users (
    id INT AUTO_INCREMENT PRIMARY KEY,
    name VARCHAR(100) NOT NULL,
    email VARCHAR(100) UNIQUE NOT NULL
);

INSERT INTO users (name, email) VALUES ('John Doe', 'john.doe@example.com');
INSERT INTO users (name, email) VALUES ('Jane Doe', 'jane.doe@example.com');

৩. ResourceDatabasePopulator ব্যবহার করে SQL স্ক্রিপ্ট চালানো

import org.springframework.jdbc.datasource.init.ResourceDatabasePopulator;
import org.springframework.core.io.ClassPathResource;

import javax.sql.DataSource;

public class DatabaseInitializer {

    private final DataSource dataSource;

    public DatabaseInitializer(DataSource dataSource) {
        this.dataSource = dataSource;
    }

    public void initializeDatabase() {
        ResourceDatabasePopulator populator = new ResourceDatabasePopulator();
        populator.addScript(new ClassPathResource("schema.sql")); // SQL স্ক্রিপ্ট যোগ করুন
        populator.execute(dataSource); // ডেটাবেসে স্ক্রিপ্ট কার্যকর করুন
    }
}

৪. Application Context এ ব্যবহার করা

import org.springframework.jdbc.datasource.DriverManagerDataSource;

public class MainApp {
    public static void main(String[] args) {
        // ডেটাসোর্স কনফিগার করুন
        DriverManagerDataSource dataSource = new DriverManagerDataSource();
        dataSource.setDriverClassName("com.mysql.cj.jdbc.Driver");
        dataSource.setUrl("jdbc:mysql://localhost:3306/testdb");
        dataSource.setUsername("root");
        dataSource.setPassword("password");

        // ডেটাবেস ইনিশিয়ালাইজ করুন
        DatabaseInitializer initializer = new DatabaseInitializer(dataSource);
        initializer.initializeDatabase();

        System.out.println("Database initialized with schema and data.");
    }
}

ResourceDatabasePopulator এর প্রধান ফিচার

  1. addScript()
    এক বা একাধিক SQL স্ক্রিপ্ট যোগ করার জন্য ব্যবহৃত হয়।

    populator.addScript(new ClassPathResource("schema.sql"));
    populator.addScript(new ClassPathResource("data.sql"));
    
  2. setSeparator()
    SQL স্টেটমেন্টগুলোর মধ্যে আলাদা করার জন্য ডিফল্ট ; সেপারেটর সেট করা।

    populator.setSeparator(";");
    
  3. setContinueOnError()
    যদি কোনো SQL স্টেটমেন্ট ব্যর্থ হয়, তাহলে বাকি স্টেটমেন্ট চালানো হবে কিনা সেটি নির্ধারণ করে।

    populator.setContinueOnError(true);
    
  4. setSqlScriptEncoding()
    স্ক্রিপ্টের এনকোডিং সেট করার জন্য।

    populator.setSqlScriptEncoding("UTF-8");
    
  5. execute()
    ডেটাবেসে স্ক্রিপ্ট কার্যকর করার জন্য।

    populator.execute(dataSource);
    

উপসংহার

Spring JDBC-তে ResourceDatabasePopulator ডেটাবেস ইনিশিয়ালাইজেশন বা টেস্ট ডেটা সেটআপের জন্য একটি সহজ এবং কার্যকর টুল। এটি ডেটাবেস অ্যাপ্লিকেশন ডেভেলপমেন্ট এবং টেস্টিং উভয়ের ক্ষেত্রে ডেভেলপারদের সময় বাঁচাতে সাহায্য করে। একাধিক স্ক্রিপ্ট চালানোর সমর্থন এবং ফিচারের কারণে এটি বিশেষভাবে উপযোগী।

Content added By

schema.sql এবং data.sql ফাইল ব্যবহার করে Database Initialization

80
80

Spring Framework ডাটাবেস ইনিশিয়ালাইজেশনের জন্য schema.sql এবং data.sql ফাইল সরবরাহ করার সুবিধা প্রদান করে। এই ফাইলগুলো স্বয়ংক্রিয়ভাবে অ্যাপ্লিকেশন চালানোর সময় Spring JDBC-এর মাধ্যমে ডাটাবেস ইনিশিয়ালাইজ করতে ব্যবহার করা হয়।


কীভাবে কাজ করে?

  1. schema.sql:
    • এটি ডাটাবেসের স্কিমা (টেবিল, ইন্ডেক্স, কনস্ট্রেইন্ট ইত্যাদি) তৈরি করতে ব্যবহৃত হয়।
    • সাধারণত টেবিল তৈরি এবং ডাটাবেস স্ট্রাকচার ডিফাইন করার জন্য ব্যবহৃত হয়।
  2. 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-এর নিয়ম

  1. schema.sql প্রথমে কার্যকর হয়, এরপর data.sql
  2. যদি আপনি 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

উপকারিতা:

  1. সহজ ডাটাবেস সেটআপ:
    • অ্যাপ্লিকেশন ডাটাবেস তৈরি এবং প্রাথমিক ডাটা লোড করার জন্য ম্যানুয়াল কাজ হ্রাস করে।
  2. পরীক্ষার সুবিধা:
    • টেস্ট ডেটাবেস দ্রুত ইনিশিয়ালাইজ করা যায়।
  3. স্বয়ংক্রিয়তা:
    • ডেভেলপমেন্ট এবং টেস্টিং উভয়ের জন্য স্বয়ংক্রিয় স্কিমা ও ডাটা লোড নিশ্চিত করে।

উপসংহার:

Spring JDBC-তে schema.sql এবং data.sql ফাইল ব্যবহার করে ডাটাবেস ইনিশিয়ালাইজেশন একটি সহজ এবং কার্যকর পদ্ধতি। এটি ডেভেলপমেন্ট এবং টেস্টিং-এর সময় প্রচুর সময় বাঁচায় এবং অ্যাপ্লিকেশনের ডাটাবেস স্ট্রাকচার ও ডেটার ধারাবাহিকতা নিশ্চিত করে।

Content added By

উদাহরণ সহ SQL Script Integration

161
161

Spring JDBC-তে SQL স্ক্রিপ্ট ইন্টিগ্রেশন ডেটাবেস ইনিশিয়ালাইজেশন, টেবিল তৈরি, এবং ডেটা ইনসার্ট করার জন্য অত্যন্ত কার্যকর। এটি সাধারণত ডেটাবেস স্কিমা সেটআপ এবং ডিফল্ট ডেটা লোড করার জন্য ব্যবহৃত হয়। Spring ফ্রেমওয়ার্ক সরাসরি SQL ফাইলগুলো থেকে এই কাজটি করতে পারে।


Spring JDBC দিয়ে SQL Script Integration এর প্রধান ধাপগুলো:

  1. SQL স্ক্রিপ্ট প্রস্তুত করা
  2. Spring Configuration সেটআপ করা
  3. JdbcTemplate বা ResourceDatabasePopulator ব্যবহার করে SQL স্ক্রিপ্ট চালানো
  4. Spring Boot প্রজেক্টে SQL স্ক্রিপ্ট ইন্টিগ্রেশন (অতিরিক্ত ফিচার)

ধাপ ১: SQL স্ক্রিপ্ট প্রস্তুত করা

একটি .sql ফাইল তৈরি করুন এবং এতে আপনার প্রয়োজনীয় SQL স্টেটমেন্ট যুক্ত করুন।

schema.sql:

CREATE TABLE employees (
    id INT PRIMARY KEY,
    name VARCHAR(50),
    department VARCHAR(50)
);

CREATE TABLE departments (
    id INT PRIMARY KEY,
    name VARCHAR(50)
);

INSERT INTO departments (id, name) VALUES (1, 'IT');
INSERT INTO departments (id, name) VALUES (2, 'HR');

ধাপ ২: Spring Configuration সেটআপ করা

Java Configuration Example:

import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.core.io.ClassPathResource;
import org.springframework.jdbc.core.JdbcTemplate;
import org.springframework.jdbc.datasource.DriverManagerDataSource;
import org.springframework.jdbc.datasource.init.ResourceDatabasePopulator;

import javax.sql.DataSource;

@Configuration
public class AppConfig {

    @Bean
    public DataSource dataSource() {
        DriverManagerDataSource dataSource = new DriverManagerDataSource();
        dataSource.setDriverClassName("com.mysql.cj.jdbc.Driver");
        dataSource.setUrl("jdbc:mysql://localhost:3306/mydb");
        dataSource.setUsername("root");
        dataSource.setPassword("password");
        return dataSource;
    }

    @Bean
    public JdbcTemplate jdbcTemplate(DataSource dataSource) {
        return new JdbcTemplate(dataSource);
    }

    @Bean
    public void initializeDatabase(DataSource dataSource) {
        ResourceDatabasePopulator databasePopulator = new ResourceDatabasePopulator();
        databasePopulator.addScript(new ClassPathResource("schema.sql"));
        databasePopulator.execute(dataSource);
    }
}

ধাপ ৩: JdbcTemplate দিয়ে SQL স্ক্রিপ্ট চালানো

JdbcTemplate ব্যবহার করে সরাসরি SQL স্ক্রিপ্ট থেকে কোয়েরি চালানো যায়।

উদাহরণ:

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.jdbc.core.JdbcTemplate;
import org.springframework.stereotype.Service;

@Service
public class SQLScriptService {

    @Autowired
    private JdbcTemplate jdbcTemplate;

    public void runScript() {
        String sql = "CREATE TABLE employees (id INT PRIMARY KEY, name VARCHAR(50), department VARCHAR(50));";
        jdbcTemplate.execute(sql);
    }
}

Spring Boot ব্যবহার করে SQL Script Integration

Spring Boot সরাসরি schema.sql এবং data.sql ফাইলগুলো থেকে ডাটাবেস ইনিশিয়ালাইজ করতে পারে।

ধাপসমূহ:

  1. src/main/resources ফোল্ডারে schema.sql এবং data.sql ফাইল তৈরি করুন।

schema.sql:

CREATE TABLE employees (
    id INT PRIMARY KEY,
    name VARCHAR(50),
    department VARCHAR(50)
);

data.sql:

INSERT INTO employees (id, name, department) VALUES (1, 'John Doe', 'IT');
INSERT INTO employees (id, name, department) VALUES (2, 'Jane Smith', 'HR');
  1. Spring Boot প্রজেক্ট চালানোর সময় এই স্ক্রিপ্টগুলো স্বয়ংক্রিয়ভাবে চালানো হবে।

Application.properties:

spring.datasource.url=jdbc:mysql://localhost:3306/mydb
spring.datasource.username=root
spring.datasource.password=password
spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver
spring.datasource.initialization-mode=always

Spring Boot SQL Script Execution Validation

আপনার ডেটাবেসে ডেটা সঠিকভাবে লোড হয়েছে কি না তা যাচাই করতে একটি সিম্পল কোড লিখতে পারেন।

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.jdbc.core.JdbcTemplate;
import org.springframework.stereotype.Service;

@Service
public class EmployeeService {

    @Autowired
    private JdbcTemplate jdbcTemplate;

    public void fetchEmployees() {
        String query = "SELECT * FROM employees";
        jdbcTemplate.query(query, (rs, rowNum) -> {
            System.out.println("ID: " + rs.getInt("id"));
            System.out.println("Name: " + rs.getString("name"));
            System.out.println("Department: " + rs.getString("department"));
            return null;
        });
    }
}

Spring JDBC দিয়ে SQL Script Integration এর সুবিধা:

  1. ডেটাবেস স্কিমা এবং ডেটা ম্যানেজমেন্ট সহজ।
  2. schema.sql এবং data.sql-এর মাধ্যমে অটোমেটেড ইনিশিয়ালাইজেশন।
  3. ট্রানজেকশন ম্যানেজমেন্ট এবং ফ্লেক্সিবিলিটি।
  4. ছোট ও মাঝারি প্রকল্পের জন্য কার্যকর।

উপসংহার:

Spring JDBC দিয়ে SQL স্ক্রিপ্ট ইন্টিগ্রেশন ডেটাবেস ইন্টিগ্রেশন এবং ইনিশিয়ালাইজেশনের জন্য একটি কার্যকর পদ্ধতি। Spring Boot এর ক্ষেত্রে এটি আরও সহজ, কারণ Spring নিজে থেকেই স্ক্রিপ্টগুলো হ্যান্ডেল করে।

Content added By
টপ রেটেড অ্যাপ

স্যাট অ্যাকাডেমী অ্যাপ

আমাদের অল-ইন-ওয়ান মোবাইল অ্যাপের মাধ্যমে সীমাহীন শেখার সুযোগ উপভোগ করুন।

ভিডিও
লাইভ ক্লাস
এক্সাম
ডাউনলোড করুন
Promotion