Apache Commons BeanUtils একটি শক্তিশালী লাইব্রেরি যা Java Beans-এর মধ্যে ডেটা কপি এবং টাইপ কনভার্সন সহজ করে তোলে। Multiple Bean Operations হল একাধিক Java Beans এর মধ্যে ডেটা কপি বা ম্যানিপুলেশন করার প্রক্রিয়া, যেমন একাধিক Beans থেকে একটি Bean এ ডেটা কপি করা বা একাধিক Beans-এর মধ্যে ডেটা ট্রান্সফার করা।
BeanUtils এর সাহায্যে আপনি একাধিক Beans এর মধ্যে properties কপি করতে পারেন এবং বিভিন্ন ধরনের object mapping বা batch operations সম্পাদন করতে পারেন। চলুন, দেখি কিভাবে BeanUtils দিয়ে একাধিক Bean এর উপর অপারেশন করা যায়।
১. Multiple Beans Data Copying
একাধিক Beans এর মধ্যে ডেটা কপি করার জন্য BeanUtils.copyProperties() ব্যবহার করা যায়। এই মেথড একটি Bean থেকে অন্য Bean এ প্রপার্টি কপি করে।
উদাহরণ: Multiple Beans Data Copying
ধরা যাক, আপনার কাছে তিনটি Person Beans রয়েছে এবং আপনাকে তাদের মধ্যে ডেটা কপি করতে হবে।
import org.apache.commons.beanutils.BeanUtils;
public class MultipleBeanOperationsExample {
public static void main(String[] args) {
try {
// Create source Person objects
Person person1 = new Person("Alice", 28);
Person person2 = new Person("Bob", 32);
Person person3 = new Person("Charlie", 25);
// Create target Person object
Person targetPerson = new Person();
// Copy properties from multiple source Person beans to target Person
BeanUtils.copyProperties(targetPerson, person1); // Copy from person1
BeanUtils.copyProperties(targetPerson, person2); // Copy from person2
BeanUtils.copyProperties(targetPerson, person3); // Copy from person3
// Output the copied properties
System.out.println("Target Person Name: " + targetPerson.getName());
System.out.println("Target Person Age: " + targetPerson.getAge());
} catch (Exception e) {
e.printStackTrace();
}
}
}
class Person {
private String name;
private int age;
// Constructor
public Person() {}
public Person(String name, int age) {
this.name = name;
this.age = age;
}
// Getter and setter methods
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
}ব্যাখ্যা:
- BeanUtils.copyProperties() ব্যবহার করে, তিনটি
PersonBeans থেকে ডেটা একটি টার্গেটPersonBean এ কপি করা হচ্ছে। - একাধিক Bean থেকে প্রপার্টি কপি করার জন্য, আপনি প্রথমে একটির প্রপার্টি কপি করবেন এবং তারপর পরবর্তী Bean থেকে প্রপার্টি কপি করবেন।
- BeanUtils এর মাধ্যমে শেষ প্রপার্টি কপি করা হলে, আগের প্রপার্টিগুলি overwrite হতে পারে, তাই যদি একই প্রপার্টি (যেমন
nameবাage) এর মান আলাদা হয়, এটি পরবর্তী Bean থেকে কপি হবে।
২. Batch Operations on Multiple Beans
ধরা যাক, আপনার কাছে একটি List বা Array রয়েছে যেখান থেকে একাধিক Bean-এ ডেটা কপি করতে হবে। আপনি BeanUtils ব্যবহার করে একসাথে একাধিক Bean অপারেশন করতে পারেন।
উদাহরণ: Batch Operations (List of Beans)
import org.apache.commons.beanutils.BeanUtils;
import java.util.ArrayList;
import java.util.List;
public class BatchBeanOperationsExample {
public static void main(String[] args) {
try {
// Create a list of source Person objects
List<Person> personList = new ArrayList<>();
personList.add(new Person("Alice", 28));
personList.add(new Person("Bob", 32));
personList.add(new Person("Charlie", 25));
// Create a list to store target Person objects
List<Person> targetList = new ArrayList<>();
// Iterate over personList and copy properties to targetList
for (Person person : personList) {
Person targetPerson = new Person();
BeanUtils.copyProperties(targetPerson, person); // Copy properties from source to target
targetList.add(targetPerson);
}
// Output the copied properties for each targetPerson
for (Person target : targetList) {
System.out.println("Target Person Name: " + target.getName());
System.out.println("Target Person Age: " + target.getAge());
}
} catch (Exception e) {
e.printStackTrace();
}
}
}ব্যাখ্যা:
- এখানে একটি List তৈরি করা হয়েছে যেখানে অনেক
PersonBeans রয়েছে। - একটি নতুন List তৈরি করা হয়েছে যেখানে targetPerson Beans এর ডেটা কপি করা হবে।
- একটি লুপ ব্যবহার করে BeanUtils.copyProperties() মেথডের মাধ্যমে প্রতিটি Bean থেকে ডেটা কপি করা হচ্ছে।
এটি batch operations এর একটি সাধারণ উদাহরণ যেখানে একাধিক Beans এর ডেটা একসাথে কপি করা হচ্ছে।
৩. Combining Multiple Beans in a Single Object
ধরা যাক, আপনাকে একাধিক Beans এর ডেটা একটি সিঙ্গল Bean-এ মিশ্রিত করতে হবে। এখানে BeanUtils এর সাহায্যে একাধিক Beans থেকে ডেটা কপি করা হবে এবং একটি নতুন CombinedPerson Bean তৈরি করা হবে।
উদাহরণ: Combine Multiple Beans into One
import org.apache.commons.beanutils.BeanUtils;
public class CombineMultipleBeansExample {
public static void main(String[] args) {
try {
// Create two Person objects
Person person1 = new Person("Alice", 28);
Person person2 = new Person("Bob", 32);
// Create a CombinedPerson object to combine the data
CombinedPerson combinedPerson = new CombinedPerson();
// Copy properties from person1 to combinedPerson
BeanUtils.copyProperties(combinedPerson, person1);
// Combine properties from person2 to combinedPerson
BeanUtils.copyProperties(combinedPerson, person2);
// Output the combined data
System.out.println("Combined Person Name: " + combinedPerson.getName()); // Output: Bob (overwritten by person2)
System.out.println("Combined Person Age: " + combinedPerson.getAge()); // Output: 32 (overwritten by person2)
} catch (Exception e) {
e.printStackTrace();
}
}
}
class CombinedPerson {
private String name;
private int age;
// Getter and setter methods
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
}ব্যাখ্যা:
- BeanUtils.copyProperties() এর মাধ্যমে person1 এবং person2 থেকে CombinedPerson এ ডেটা কপি করা হচ্ছে।
- যেহেতু name এবং age প্রপার্টি person2 তে কপি হচ্ছে, তাই এটি person1 এর মানকে overwrite করবে।
- এটি multiple Bean combination এর একটি উদাহরণ, যেখানে দুটি Bean থেকে একটি একক Bean এ ডেটা মিশ্রিত হচ্ছে।
৪. Multiple Beans with Different Types (Type Conversion)
যখন আপনার একাধিক Beans থাকে এবং তাদের মধ্যে বিভিন্ন টাইপের ডেটা কপি করতে হয়, তখন BeanUtils এ type conversion প্রয়োজন হতে পারে। আপনি BeanUtilsBean বা BeanUtils এর মাধ্যমে টাইপ কনভার্সন করতে পারেন।
উদাহরণ: Multiple Beans with Type Conversion
import org.apache.commons.beanutils.BeanUtils;
import java.util.Map;
public class MultipleBeansWithTypeConversion {
public static void main(String[] args) {
try {
// Create a map of string data
Map<String, String> data = Map.of(
"name", "John",
"age", "30" // String data needs to be converted to Integer
);
// Create a target Person object
Person person = new Person();
// Copy properties from map to Person bean with type conversion
BeanUtils.populate(person, data);
// Output the converted properties
System.out.println("Name: " + person.getName()); // Output: John
System.out.println("Age: " + person.getAge()); // Output: 30 (String to Integer conversion)
} catch (Exception e) {
e.printStackTrace();
}
}
}ব্যাখ্যা:
- এখানে Map থেকে Person Bean তে ডেটা কপি করা হচ্ছে। যেহেতু age একটি String হিসেবে আছে, তাই BeanUtils এটি Integer তে কনভার্ট করে কপি করবে।
সারাংশ
- Multiple Bean Operations হল একাধিক Java Bean এর মধ্যে ডেটা কপি বা ম্যানিপুলেশন করার প্রক্রিয়া।
- BeanUtils.copyProperties()
মেথড ব্যবহার করে একাধিক Beans থেকে একটি Bean-এ ডেটা কপি করা যেতে পারে।
- Batch Processing এর মাধ্যমে একসাথে অনেক Bean এর মধ্যে ডেটা কপি করা সহজ হয়।
- Combining Multiple Beans এর মাধ্যমে একাধিক Bean থেকে ডেটা একটি সিঙ্গল Bean-এ সংযুক্ত করা যায়।
- Type Conversion এর মাধ্যমে BeanUtils ব্যবহার করে ডেটার টাইপ কনভার্সন করা যায়, যেমন String থেকে Integer কনভার্ট করা।
এই টেকনিকগুলি Java Bean এবং DTO ম্যানিপুলেশন, form data binding, এবং database object mapping এর মতো ক্ষেত্রে অত্যন্ত উপকারী।
Read more