উদাহরণ সহ Spring Batch এর ডেটাবেস Integration

Spring Batch এবং ডেটাবেস Integration - স্প্রিং ব্যাচ (Spring Batch) - Java Technologies

282

স্প্রিং ব্যাচ (Spring Batch) ডেটাবেস ইন্টিগ্রেশন খুবই গুরুত্বপূর্ণ একটি বৈশিষ্ট্য, যা ব্যাচ প্রসেসিংয়ের সময় ডাটাবেসে ডাটা রিডিং, প্রসেসিং, এবং রাইটিংয়ের কাজ করতে সাহায্য করে। ডেটাবেস ইন্টিগ্রেশন সাধারণত ItemReader, ItemProcessor, এবং ItemWriter এর মাধ্যমে পরিচালিত হয়, যেখানে ItemReader ডাটাবেস থেকে ডাটা পড়তে, ItemProcessor ডাটাকে প্রসেস করতে এবং ItemWriter সেই ডাটা ডাটাবেসে সেভ করতে ব্যবহৃত হয়।

স্প্রিং ব্যাচের ডেটাবেস ইন্টিগ্রেশন সহজ করতে বিভিন্ন ধরনের ItemReader এবং ItemWriter রয়েছে, যেমন JdbcCursorItemReader, JpaPagingItemReader, এবং JdbcBatchItemWriter। এখানে আমরা ডেটাবেসের সাথে কাজ করার জন্য একটি সাধারণ উদাহরণ দেখব।


ডেটাবেস ইন্টিগ্রেশন উদাহরণ

উদাহরণ: Employee ডাটা প্রসেসিং

ধরা যাক, আমাদের একটি Employee টেবিল রয়েছে, যেখানে কর্মচারীদের নাম, ইমেইল, এবং তাদের বেতন রয়েছে। আমাদের উদ্দেশ্য হল, এই কর্মচারীদের বেতনকে কিছু বৃদ্ধি করে আবার ডাটাবেসে সেভ করা।

১. ডেটাবেস টেবিল তৈরি

প্রথমে, একটি Employee টেবিল তৈরি করি, যেটি SQL ডেটাবেসে ব্যবহার করা হবে:

CREATE TABLE employee (
    id INT PRIMARY KEY,
    name VARCHAR(100),
    email VARCHAR(100),
    salary DECIMAL
);

২. স্প্রিং ব্যাচ কনফিগারেশন

স্প্রিং ব্যাচে ডেটাবেস ইন্টিগ্রেশন কনফিগারেশন করার জন্য প্রথমে ItemReader, ItemProcessor, এবং ItemWriter কনফিগার করতে হবে।

২.১. JdbcCursorItemReader - ডেটাবেস থেকে ডাটা পড়া

JdbcCursorItemReader ডেটাবেস থেকে রেকর্ড একে একে রিড করতে ব্যবহৃত হয়। আমরা এই ক্লাসটি ব্যবহার করে কর্মচারীদের ডাটা রিড করব।

import org.springframework.batch.item.database.JdbcCursorItemReader;
import org.springframework.jdbc.core.BeanPropertyRowMapper;
import javax.sql.DataSource;

@Bean
public JdbcCursorItemReader<Employee> reader(DataSource dataSource) {
    JdbcCursorItemReader<Employee> reader = new JdbcCursorItemReader<>();
    reader.setDataSource(dataSource);
    reader.setSql("SELECT id, name, email, salary FROM employee");
    reader.setRowMapper(new BeanPropertyRowMapper<>(Employee.class));
    return reader;
}

এখানে, JdbcCursorItemReader SQL কুয়েরি ব্যবহার করে Employee টেবিল থেকে সমস্ত কর্মচারী ডাটা রিড করছে। BeanPropertyRowMapper ক্লাসটি ডাটাবেস রেজাল্ট সেটকে Employee অবজেক্টে ম্যাপ করে।

২.২. ItemProcessor - ডাটা প্রসেসিং

এখন, কর্মচারীদের বেতন ১০% বাড়ানোর জন্য একটি ItemProcessor তৈরি করি:

import org.springframework.batch.item.ItemProcessor;

public class EmployeeSalaryProcessor implements ItemProcessor<Employee, Employee> {

    @Override
    public Employee process(Employee item) throws Exception {
        // বেতন ১০% বৃদ্ধি
        item.setSalary(item.getSalary() * 1.1);
        return item;
    }
}

এই ItemProcessor ক্লাসটি প্রতিটি Employee অবজেক্টের বেতন ১০% বৃদ্ধি করবে।

২.৩. JdbcBatchItemWriter - ডেটাবেসে ডাটা লেখানো

এখন, JdbcBatchItemWriter ব্যবহার করে প্রসেস করা ডাটা ডাটাবেসে সেভ করা হবে।

import org.springframework.batch.item.database.JdbcBatchItemWriter;
import javax.sql.DataSource;

@Bean
public JdbcBatchItemWriter<Employee> writer(DataSource dataSource) {
    JdbcBatchItemWriter<Employee> writer = new JdbcBatchItemWriter<>();
    writer.setDataSource(dataSource);
    writer.setSql("UPDATE employee SET name = ?, email = ?, salary = ? WHERE id = ?");
    writer.setItemPreparedStatementSetter(new EmployeePreparedStatementSetter());
    return writer;
}

এখানে, JdbcBatchItemWriter SQL UPDATE কুয়েরি ব্যবহার করে ডাটাবেসের Employee টেবিল আপডেট করবে। EmployeePreparedStatementSetter ক্লাসটি ডাটা সঠিকভাবে PreparedStatement এ সেট করবে।

EmployeePreparedStatementSetter ক্লাসের উদাহরণ:

import java.sql.PreparedStatement;
import java.sql.SQLException;
import org.springframework.batch.item.database.ItemPreparedStatementSetter;

public class EmployeePreparedStatementSetter implements ItemPreparedStatementSetter<Employee> {

    @Override
    public void setValues(Employee item, PreparedStatement ps) throws SQLException {
        ps.setString(1, item.getName());
        ps.setString(2, item.getEmail());
        ps.setBigDecimal(3, item.getSalary());
        ps.setInt(4, item.getId());
    }
}

এটি প্রতিটি Employee অবজেক্টের ডাটা সঠিকভাবে PreparedStatement এর মাধ্যমে ডাটাবেসে আপডেট করবে।


৩. Job এবং Step কনফিগারেশন

এখন, সবগুলো উপাদানকে একত্রিত করে একটি Job এবং Step কনফিগার করা হবে:

import org.springframework.batch.core.Step;
import org.springframework.batch.core.Job;
import org.springframework.batch.core.configuration.annotation.JobBuilderFactory;
import org.springframework.batch.core.configuration.annotation.StepBuilderFactory;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;

@Configuration
public class BatchConfig {

    private final JobBuilderFactory jobBuilderFactory;
    private final StepBuilderFactory stepBuilderFactory;

    public BatchConfig(JobBuilderFactory jobBuilderFactory, StepBuilderFactory stepBuilderFactory) {
        this.jobBuilderFactory = jobBuilderFactory;
        this.stepBuilderFactory = stepBuilderFactory;
    }

    @Bean
    public Job updateEmployeeSalaryJob() {
        return jobBuilderFactory.get("updateEmployeeSalaryJob")
                .start(processEmployeeSalaryStep())
                .build();
    }

    @Bean
    public Step processEmployeeSalaryStep() {
        return stepBuilderFactory.get("processEmployeeSalaryStep")
                .<Employee, Employee>chunk(10)
                .reader(reader(null))  // Reader: JdbcCursorItemReader
                .processor(new EmployeeSalaryProcessor())  // Processor: EmployeeSalaryProcessor
                .writer(writer(null))  // Writer: JdbcBatchItemWriter
                .build();
    }
}

এখানে, updateEmployeeSalaryJob জবটি একটি স্টেপ processEmployeeSalaryStep নিয়ে গঠিত। এই স্টেপে JdbcCursorItemReader, EmployeeSalaryProcessor, এবং JdbcBatchItemWriter যুক্ত রয়েছে।


সারাংশ

স্প্রিং ব্যাচে ডেটাবেস ইন্টিগ্রেশন একটি গুরুত্বপূর্ণ প্রক্রিয়া, যেখানে ItemReader, ItemProcessor, এবং ItemWriter ব্যবহার করে ডাটাবেস থেকে ডাটা রিড, প্রসেস এবং রাইট করা হয়। এই উদাহরণে JdbcCursorItemReader, ItemProcessor, এবং JdbcBatchItemWriter ব্যবহার করা হয়েছে কর্মচারীদের বেতন ১০% বৃদ্ধি করার জন্য এবং সেই ডাটা ডাটাবেসে আপডেট করা হয়েছে। স্প্রিং ব্যাচের মাধ্যমে ডেটাবেস ইন্টিগ্রেশন সহজ এবং কার্যকরীভাবে করা যায়, যা বড় পরিমাণ ডাটার প্রসেসিংয়ের জন্য অত্যন্ত উপযোগী।


Content added By
Promotion

Are you sure to start over?

Loading...