উদাহরণ সহ ItemWriter Configuration

Spring Batch ItemWriter - স্প্রিং ব্যাচ (Spring Batch) - Java Technologies

301

স্প্রিং ব্যাচ (Spring Batch) একটি শক্তিশালী ফ্রেমওয়ার্ক যা ব্যাচ প্রসেসিংয়ের জন্য ব্যবহৃত হয়। এর মধ্যে ItemWriter একটি গুরুত্বপূর্ণ উপাদান যা চাঙ্ক প্রসেসিংয়ের পর প্রক্রিয়া করা ডেটা লেখার জন্য ব্যবহৃত হয়। ItemWriter একটি ইন্টারফেস, এবং এর মাধ্যমে প্রক্রিয়া করা আইটেমগুলো ডেটাবেস, ফাইল, বা অন্য যেকোনো আউটপুট ডেস্টিনেশনে লেখা হয়।

নিচে, ItemWriter কনফিগারেশন এবং ব্যবহারের উদাহরণ দেওয়া হলো।


ItemWriter এর ভূমিকা

ItemWriter মূলত একটি ইন্টারফেস যা একাধিক আইটেম গ্রহণ করে এবং সেগুলো একটি নির্দিষ্ট ডেস্টিনেশনে লেখে। এটি ব্যাচের শেষে কাজ করে এবং সাধারণত একটি নির্দিষ্ট সংখ্যক আইটেম একত্রে লেখে, যাতে পারফরম্যান্স বৃদ্ধি পায়।

এটি তিনটি প্রধান দায়িত্ব পালন করে:

  1. ডেটা লেখা: এটি প্রক্রিয়া করা ডেটা নির্দিষ্ট ডেস্টিনেশনে (যেমন ডেটাবেস, ফাইল, বা কনসোল) লেখে।
  2. ব্যাচ আউটপুট: এটি একবারে একাধিক আইটেম লেখে।
  3. পারফরম্যান্স উন্নতি: একাধিক আইটেম একসঙ্গে লেখার মাধ্যমে পারফরম্যান্স উন্নত হয়।

ItemWriter কনফিগারেশন উদাহরণ

ধরা যাক, আমাদের একটি প্রোডাক্ট ক্লাস রয়েছে এবং আমরা ItemWriter ব্যবহার করে প্রক্রিয়া করা আইটেমগুলো কনসোলে লিখতে চাই। নিচে উদাহরণসহ কনফিগারেশন দেওয়া হলো।

Product ক্লাস:

public class Product {
    private String name;
    private double price;

    public Product(String name, double price) {
        this.name = name;
        this.price = price;
    }

    // Getters and Setters
    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public double getPrice() {
        return price;
    }

    public void setPrice(double price) {
        this.price = price;
    }
}

ItemWriter কনফিগারেশন:

ItemWriter এর জন্য আমরা একটি কাস্টম ক্লাস তৈরি করব যা ItemWriter ইন্টারফেস ইমপ্লিমেন্ট করবে এবং ডেটা কনসোলে লিখবে।

@Bean
public ItemWriter<Product> itemWriter() {
    return new ItemWriter<Product>() {
        @Override
        public void write(List<? extends Product> items) throws Exception {
            // আইটেমগুলিকে কনসোলে লিখে
            for (Product product : items) {
                System.out.println("Writing product: " + product.getName() + " with price: " + product.getPrice());
            }
        }
    };
}

এখানে, আমরা একটি কাস্টম ItemWriter তৈরি করেছি যা Product আইটেমগুলি গ্রহণ করে এবং কনসোলে সেই আইটেমের নাম এবং মূল্য লেখে।

Step কনফিগারেশন:

এখন, আমরা ItemReader, ItemProcessor, এবং ItemWriter একত্রে ব্যবহার করব একটি Step কনফিগারেশনে, যেখানে chunk(5) দ্বারা প্রতি চাঙ্কে ৫টি আইটেম প্রসেস করা হবে।

@Bean
public Step step1() {
    return stepBuilderFactory.get("step1")
        .<Product, Product>chunk(5)
        .reader(itemReader())       // ডেটা পড়ার জন্য ItemReader
        .processor(itemProcessor()) // ডেটা প্রসেস করার জন্য ItemProcessor
        .writer(itemWriter())       // ডেটা লেখার জন্য ItemWriter
        .build();
}

এখানে, chunk(5) দ্বারা প্রতি চাঙ্কে ৫টি Product আইটেম প্রসেস করা হবে এবং একবারে লেখা হবে।

Job কনফিগারেশন:

এটি সম্পূর্ণ Job কনফিগারেশনের অংশ হতে হবে, যা স্প্রিং ব্যাচের ব্যাচ প্রসেসিংয়ের মূল অংশ। আমরা এই Step কে একটি Job-এ অন্তর্ভুক্ত করব।

@Bean
public Job job(JobRepository jobRepository, JobLauncher jobLauncher) {
    return jobBuilderFactory.get("job")
        .start(step1())
        .build();
}

এখানে, job তৈরি করা হয়েছে, যা step1 কে এক্সিকিউট করবে।


ItemWriter ব্যবহার করে ডেটা লেখা

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

Writing product: Product1 with price: 100.0
Writing product: Product2 with price: 200.0
Writing product: Product3 with price: 150.0

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


আরও উন্নত ItemWriter কনফিগারেশন

আমরা যদি ডেটাবেসে ডেটা লিখতে চাই, তবে JdbcBatchItemWriter ব্যবহার করতে পারি, যা স্প্রিং ব্যাচের বিল্ট-ইন ItemWriter। নিচে এর একটি উদাহরণ দেওয়া হল:

JdbcBatchItemWriter কনফিগারেশন:

@Bean
public JdbcBatchItemWriter<Product> itemWriter(DataSource dataSource) {
    JdbcBatchItemWriter<Product> writer = new JdbcBatchItemWriter<>();
    writer.setDataSource(dataSource);
    writer.setSql("INSERT INTO products (name, price) VALUES (?, ?)");
    writer.setItemPreparedStatementSetter(new ItemPreparedStatementSetter<Product>() {
        @Override
        public void setValues(Product product, PreparedStatement ps) throws SQLException {
            ps.setString(1, product.getName());
            ps.setDouble(2, product.getPrice());
        }
    });
    return writer;
}

এখানে, JdbcBatchItemWriter ব্যবহার করা হয়েছে যাতে ডেটাবেসে প্রোডাক্ট আইটেমগুলো ইনসার্ট করা যায়। SQL কুয়েরি এবং ItemPreparedStatementSetter ব্যবহার করে আমরা Product আইটেমগুলো ডেটাবেসে ইনসার্ট করি।


উপসংহার

স্প্রিং ব্যাচে ItemWriter ডেটা লেখার জন্য একটি গুরুত্বপূর্ণ উপাদান। এটি ডেটা কনফিগার করে আউটপুট ডেস্টিনেশনে (যেমন কনসোল, ফাইল, ডেটাবেস) লেখে। উপরের উদাহরণে, কাস্টম ItemWriter এবং JdbcBatchItemWriter ব্যবহার করা হয়েছে, যা আপনাকে ব্যাচ প্রসেসিংয়ের ক্ষেত্রে বিভিন্ন আউটপুট ডেস্টিনেশনে ডেটা লেখার জন্য সাহায্য করবে। ItemWriter কনফিগারেশন আরও কাস্টমাইজ এবং সম্প্রসারণযোগ্য, যা স্প্রিং ব্যাচের একটি শক্তিশালী বৈশিষ্ট্য।

Content added By
Promotion

Are you sure to start over?

Loading...