Java Bean থেকে Map তৈরি করার জন্য Apache Commons BeanUtils লাইব্রেরি ব্যবহার করা যেতে পারে। BeanUtils-এর describe() মেথড ব্যবহার করে আপনি একটি Java Bean-এর প্রপার্টি এবং তাদের মানকে একটি Map-এ কনভার্ট করতে পারেন। এই পদ্ধতিটি বিশেষত তখন কাজে আসে যখন আপনাকে একটি Bean-এর ডেটা Map আকারে প্রক্রিয়া করতে হয়।
1. BeanUtils.describe() মেথড ব্যবহার করা
describe() মেথডটি একটি Java Bean-এর প্রপার্টি নাম এবং মানের একটি Map রিটার্ন করে। এখানে Map-এর key হবে Bean-এর প্রপার্টির নাম এবং value হবে সেই প্রপার্টির মান।
describe() মেথডের সেন্ট্যাক্স:
public static Map<String, String> describe(Object bean) throws IllegalAccessException, InvocationTargetException, NoSuchMethodException;bean: Bean অবজেক্ট যা থেকে ডেটা কপি করা হবে।- Map<String, String>: প্রতিটি Bean প্রপার্টি একটি string key-value পেয়ার হিসাবে Map-এ থাকবে।
2. Bean থেকে Map তৈরি করার উদাহরণ
উদাহরণ ১: সাধারণ Bean থেকে Map তৈরি করা
import org.apache.commons.beanutils.BeanUtils;
import java.util.Map;
public class BeanToMapExample {
public static void main(String[] args) {
try {
// Create a Person object (Bean)
Person person = new Person("John", 30);
// Convert Bean to Map using BeanUtils.describe()
Map<String, String> personMap = BeanUtils.describe(person);
// Output the Map
System.out.println("Bean to Map:");
for (Map.Entry<String, String> entry : personMap.entrySet()) {
System.out.println(entry.getKey() + ": " + entry.getValue());
}
} catch (Exception e) {
e.printStackTrace();
}
}
}
class Person {
private String name;
private int age;
// Constructor
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;
}
}ব্যাখ্যা:
- এখানে
describe()মেথড ব্যবহার করেPersonBean থেকে একটি Map তৈরি করা হয়েছে। - Map এর key হবে প্রপার্টির নাম (যেমন
"name"এবং"age") এবং value হবে সেই প্রপার্টির মান (যেমন"John"এবং30)।
আউটপুট:
Bean to Map:
name: John
age: 303. নোট:
- Map-এ ডেটা ভ্যালু:
describe()মেথডে সমস্ত প্রপার্টির মান String হিসেবে থাকবে। সুতরাং, আপনি যদিInteger,Double, বা অন্য কোন ডেটা টাইপের প্রপার্টি চান, তাহলে আপনি প্রয়োজনীয় কাস্টম কনভার্সন করতে পারেন। - নেস্টেড প্রপার্টি:
describe()মেথড শুধুমাত্র সরাসরি Bean-এর প্রপার্টি রিটার্ন করে, নেস্টেড প্রপার্টির জন্য আপনাকে আলাদা কাস্টমাইজেশন করতে হবে।
4. Map থেকে Bean তৈরি করা
এছাড়া, আপনি যদি একটি Map থেকে Bean তৈরি করতে চান, তখন BeanUtils.populate() মেথড ব্যবহার করতে পারেন। এটি Map বা অন্যান্য ডেটা সোর্স থেকে Bean-এ ডেটা populate করতে সহায়তা করে।
উদাহরণ: Map থেকে Bean তৈরি করা
import org.apache.commons.beanutils.BeanUtils;
import java.util.HashMap;
import java.util.Map;
public class MapToBeanExample {
public static void main(String[] args) {
try {
// Create a Map with key-value pairs
Map<String, String> dataMap = new HashMap<>();
dataMap.put("name", "Alice");
dataMap.put("age", "25");
// Create a Person object (Bean)
Person person = new Person();
// Populate Bean using BeanUtils.populate()
BeanUtils.populate(person, dataMap);
// Output the populated Bean properties
System.out.println("Map to Bean:");
System.out.println("Name: " + person.getName()); // Output: Alice
System.out.println("Age: " + person.getAge()); // Output: 25
} catch (Exception e) {
e.printStackTrace();
}
}
}
class Person {
private String name;
private int age;
// Constructor
public Person() {}
// 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;
}
}ব্যাখ্যা:
- এখানে একটি
Mapতৈরি করা হয়েছে, যেখানেkeyBean-এর প্রপার্টি নাম এবংvalueপ্রপার্টির মান। BeanUtils.populate()ব্যবহার করে Map থেকেPersonBean-এ ডেটা populate করা হয়েছে।
আউটপুট:
Map to Bean:
Name: Alice
Age: 255. Bean থেকে Map এ Nested Properties কপি করা
describe() মেথড শুধুমাত্র সরাসরি প্রপার্টি কপি করে, তাই nested properties কপি করার জন্য আপনাকে কিছু কাস্টম লজিক ব্যবহার করতে হতে পারে। সাধারণত, nested properties ম্যানিপুলেট করতে BeanUtilsBean বা PropertyUtils ব্যবহার করা হয়।
সারাংশ
BeanUtils.describe()মেথড ব্যবহার করে Java Bean থেকে একটি Map তৈরি করা যায়, যেখানে Bean-এর প্রপার্টির নাম key এবং মান value হিসেবে Map-এ রাখা হয়।- Map থেকে Bean তৈরি করার জন্য
BeanUtils.populate()মেথড ব্যবহার করা হয়, যা Map-এর key-value পেয়ার অনুযায়ী Bean-এর প্রপার্টি populate করতে সাহায্য করে। describe()মেথড কেবল সরাসরি প্রপার্টি কপি করে, nested প্রপার্টি ম্যানিপুলেট করতে আলাদা কাস্টমাইজেশন প্রয়োজন হতে পারে।
Read more