Spring Batch একটি শক্তিশালী ফ্রেমওয়ার্ক যা ডেটা প্রসেসিংয়ের জন্য ব্যবহৃত হয়। যখন ব্যাচ প্রসেসিংয়ে ডেটা লেখার কাজ আসে, তখন ItemWriter ব্যবহার করা হয়। Spring Batch এ তিনটি জনপ্রিয় ItemWriter হল: FlatFileItemWriter, JdbcBatchItemWriter, এবং JpaItemWriter। এগুলোর মধ্যে প্রতিটির ব্যবহারের ক্ষেত্র ভিন্ন, এবং এগুলি বিভিন্ন আউটপুট সোর্সে ডেটা লেখার জন্য ব্যবহৃত হয়। চলুন দেখি প্রতিটি ItemWriter এর বিস্তারিত ব্যবহার এবং উদ্দেশ্য।
১. FlatFileItemWriter
FlatFileItemWriter একটি ItemWriter যা ফ্ল্যাট ফাইল (যেমন CSV, TXT) এ ডেটা লেখার জন্য ব্যবহৃত হয়। এটি সাধারণত ডেটা রিড করার পর ফলাফল একটি ফাইলের মধ্যে সংরক্ষণ করার জন্য ব্যবহৃত হয়। এই Writer টি ডেটা লেখার সময় একটি নির্দিষ্ট ফরম্যাটে ডেটা রূপান্তর করে, যেমন CSV ফরম্যাটে ডেটা লেখা।
ব্যবহার
@Bean
public FlatFileItemWriter<User> writer() {
FlatFileItemWriter<User> writer = new FlatFileItemWriter<>();
writer.setResource(new FileSystemResource("users.csv"));
// Set the LineAggregator to format the data in a specific way
writer.setLineAggregator(new DelimitedLineAggregator<User>() {{
setDelimiter(",");
setFieldExtractor(new BeanWrapperFieldExtractor<User>() {{
setNames(new String[] { "id", "name", "email" });
}});
}});
return writer;
}
- Resource:
FlatFileItemWriterএ ফাইলের লোকেশন সেট করা হয় যেখানে ডেটা লেখার কাজ হবে। - LineAggregator: এটি
Itemগুলিকে একটি লাইন আকারে রূপান্তর করে। এখানেDelimitedLineAggregatorব্যবহার করা হয়েছে যা কমা দিয়ে বিভিন্ন ফিল্ড আলাদা করে। - FieldExtractor: এটি ডেটা থেকে নির্দিষ্ট ফিল্ড বের করার জন্য ব্যবহৃত হয়, যেমন এখানে
id,name, এবংemailফিল্ডগুলো নির্বাচন করা হয়েছে।
ব্যবহারের সুবিধা
- সহজ এবং কার্যকরী ফাইল লেখার জন্য।
- বিভিন্ন ফরম্যাটে (যেমন CSV) ফাইল তৈরি করতে সহায়তা করে।
২. JdbcBatchItemWriter
JdbcBatchItemWriter একটি ItemWriter যা ডেটা ব্যাচ আকারে ডেটাবেসে ইনসার্ট, আপডেট, বা ডিলিট করার জন্য ব্যবহৃত হয়। এটি একটি SQL স্টেটমেন্ট ব্যবহার করে ডেটাবেসে একাধিক রেকর্ড লেখা বা আপডেট করা যায়। যখন আপনার ব্যাচ প্রসেসিংয়ে ডেটাবেসের সাথে কাজ করতে হয়, তখন এই Writer ব্যবহার করা হয়।
ব্যবহার
@Bean
public JdbcBatchItemWriter<User> writer(DataSource dataSource) {
JdbcBatchItemWriter<User> writer = new JdbcBatchItemWriter<>();
writer.setDataSource(dataSource);
writer.setSql("INSERT INTO users (id, name, email) VALUES (:id, :name, :email)");
writer.setItemSqlParameterSourceProvider(new BeanPropertyItemSqlParameterSourceProvider<>());
return writer;
}
- DataSource: ডেটাবেসের সাথে সংযোগ স্থাপন করতে
DataSourceব্যবহার করা হয়। - SQL: যে SQL স্টেটমেন্টে ডেটা ইনসার্ট বা আপডেট হবে, সেটি নির্দিষ্ট করা হয়।
- ItemSqlParameterSourceProvider: এটি ডেটাবেসের জন্য ডেটা ম্যানিপুলেট করার জন্য উপযুক্ত ফিল্ডগুলি ম্যাপ করে।
ব্যবহারের সুবিধা
- ব্যাচ আকারে ডেটাবেসে ডেটা লেখার জন্য খুবই কার্যকরী।
- ডেটাবেস অপারেশনের জন্য অপটিমাইজড এবং দ্রুত।
- ব্যাচ প্রসেসিংয়ের মাধ্যমে একাধিক ডেটাবেস অপারেশন (ইনসার্ট/আপডেট) একই সময়ে সম্পন্ন করা সম্ভব।
৩. JpaItemWriter
JpaItemWriter একটি ItemWriter যা JPA (Java Persistence API) ব্যবহার করে ডেটাবেসে ডেটা লেখার জন্য ব্যবহৃত হয়। এটি সাধারণত JPA এন্টিটির মাধ্যমে ডেটাবেসে ডেটা সেভ করতে ব্যবহৃত হয়। JpaItemWriter ডেটাবেসে একাধিক অবজেক্ট ইনসার্ট, আপডেট বা মর্জ করার জন্য JPA এর EntityManager ব্যবহার করে।
ব্যবহার
@Bean
public JpaItemWriter<User> writer(EntityManagerFactory entityManagerFactory) {
JpaItemWriter<User> writer = new JpaItemWriter<>();
writer.setEntityManagerFactory(entityManagerFactory);
return writer;
}
- EntityManagerFactory: এটি JPA EntityManager তৈরি করতে ব্যবহৃত হয় যা ডেটাবেসে ডেটা লেখার জন্য প্রয়োজনীয়।
- JpaItemWriter: এটি JPA Entity এর মাধ্যমে ডেটাবেসে ডেটা লেখার জন্য ব্যবহৃত হয়।
ব্যবহারের সুবিধা
- JPA Entity ব্যবহারের মাধ্যমে ডেটাবেসের সাথে কাজ করতে সুবিধাজনক।
- Spring Data JPA এর সাথে ভালভাবে কাজ করে।
- EntityManager ব্যবহার করে ডেটা লেখা এবং আপডেট করা সহজ।
FlatFileItemWriter, JdbcBatchItemWriter, এবং JpaItemWriter এর মধ্যে পার্থক্য
| বিষয় | FlatFileItemWriter | JdbcBatchItemWriter | JpaItemWriter |
|---|---|---|---|
| ব্যবহার | ফ্ল্যাট ফাইল (যেমন CSV, TXT) এ ডেটা লেখার জন্য। | ডেটাবেসে ব্যাচ আকারে ডেটা ইনসার্ট/আপডেট/ডিলিট করার জন্য। | JPA এন্টিটি ব্যবহার করে ডেটাবেসে ডেটা লেখার জন্য। |
| ফাইল ফরম্যাট | CSV, TXT, বা অন্যান্য ফ্ল্যাট ফাইল ফরম্যাট। | ডেটাবেসে ডেটা লেখা (SQL স্টেটমেন্ট)। | ডেটাবেসে JPA এন্টিটি দিয়ে ডেটা লেখা। |
| ডেটা সংরক্ষণ পদ্ধতি | ফাইল সিস্টেমে ডেটা লেখা। | ডেটাবেসের টেবিলে ডেটা ইনসার্ট করা। | JPA এর EntityManager ব্যবহার করে ডেটাবেসে ডেটা সংরক্ষণ। |
| ব্যাচ প্রসেসিং | একেকটি লাইনে ডেটা লেখার জন্য উপযুক্ত। | ডেটাবেসে ব্যাচে একাধিক রেকর্ড প্রসেস করে। | JPA এর মাধ্যমে একাধিক রেকর্ড ইনসার্ট বা আপডেট করা। |
| উপযুক্ততা | ফাইল ভিত্তিক আউটপুটের জন্য উপযুক্ত। | ডেটাবেসের জন্য ব্যাচ প্রসেসিং ও অপটিমাইজড। | JPA ব্যবহারকারী ডেটাবেস কাজের জন্য। |
সারাংশ
Spring Batch এ FlatFileItemWriter, JdbcBatchItemWriter, এবং JpaItemWriter তিনটি অত্যন্ত গুরুত্বপূর্ণ ItemWriter যা ডেটা লেখা বা প্রসেস করার জন্য ব্যবহৃত হয়। FlatFileItemWriter ফ্ল্যাট ফাইল (যেমন CSV) এ ডেটা লেখার জন্য ব্যবহৃত হয়, JdbcBatchItemWriter ডেটাবেসে ব্যাচ আকারে ডেটা লেখার জন্য এবং JpaItemWriter JPA Entity এর মাধ্যমে ডেটাবেসে ডেটা লেখার জন্য ব্যবহৃত হয়। প্রতিটি ItemWriter বিভিন্ন ধরনের ডেটাবেস বা আউটপুট সোর্সের জন্য উপযুক্ত এবং এটি ব্যাচ প্রসেসিংয়ের কাজ আরও সহজ এবং কার্যকরী করে তোলে।