Java-তে Map থেকে Java Bean-এ ডেটা সেট করার জন্য আপনি Apache Commons BeanUtils লাইব্রেরি ব্যবহার করতে পারেন। BeanUtils-এ একটি মেথড রয়েছে, যেটি Map-এর কীগুলোর মাধ্যমে Java Bean-এর প্রপার্টিতে ডেটা সেট করে। এটি বিশেষভাবে ব্যবহৃত হয় যখন ডেটা একটি Map-এ থাকে এবং সেই ডেটাকে Java Bean-এ ইনজেক্ট করতে হয়।
উদাহরণ: Map থেকে Bean এ ডেটা সেট করা
ধরা যাক, আপনার কাছে একটি Map<String, Object> রয়েছে এবং আপনি সেই Map থেকে ডেটা Java Bean-এর প্রপার্টিতে সেট করতে চান।
১. Java Bean তৈরি করা
প্রথমে, একটি সাধারণ Java Bean তৈরি করি, যেখানে কিছু প্রপার্টি থাকবে।
public 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;
}
}এখানে Person ক্লাসের দুটি প্রপার্টি name এবং age রয়েছে, যার জন্য গেটার এবং সেটার মেথড দেওয়া হয়েছে।
২. Map থেকে Bean-এ ডেটা সেট করা
এখন Map থেকে Person Bean-এ ডেটা সেট করার উদাহরণ দেখি। আমরা Apache Commons BeanUtils এর 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 data
Map<String, Object> personMap = new HashMap<>();
personMap.put("name", "John");
personMap.put("age", 30);
// Create a Person object (target bean)
Person person = new Person();
// Use BeanUtils to populate the Person object from the Map
BeanUtils.populate(person, personMap);
// Output the properties of the populated Person object
System.out.println("Name: " + person.getName()); // Output: John
System.out.println("Age: " + person.getAge()); // Output: 30
} catch (Exception e) {
e.printStackTrace();
}
}
}ব্যাখ্যা:
- Map<String, Object> personMap: এখানে একটি
Mapতৈরি করা হয়েছে, যেখানেnameএবংageএর মান দেয়া হয়েছে। - BeanUtils.populate(): এই মেথডটি
personMapথেকেpersonনামকPersonBean-এর প্রপার্টিতে ডেটা সেট করবে। এই মেথডটি Map এর কীগুলিকে Bean-এর গেটার/সেটার মেথডের মাধ্যমে ম্যাপ করবে। person.getName()এবংperson.getAge()ব্যবহার করে Map থেকে Bean-এর প্রপার্টিতে সঠিক ডেটা সেট হওয়া নিশ্চিত করা হয়েছে।
৩. Map থেকে Bean-এ Nested Properties সেট করা
এছাড়া, nested properties সাপোর্ট করার জন্য, আপনি dot notation ব্যবহার করতে পারেন। উদাহরণস্বরূপ, যদি Person ক্লাসে একটি Address ক্লাস থাকে, তাহলে আপনি Map থেকে nested properties সেট করতে পারেন।
উদাহরণ: Nested Properties সেট করা
public class Person {
private String name;
private int age;
private Address address;
// 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;
}
public Address getAddress() {
return address;
}
public void setAddress(Address address) {
this.address = address;
}
}
public class Address {
private String street;
private String city;
// Getter and Setter Methods
public String getStreet() {
return street;
}
public void setStreet(String street) {
this.street = street;
}
public String getCity() {
return city;
}
public void setCity(String city) {
this.city = city;
}
}এখন, যদি আপনি Address নামক nested class ব্যবহার করেন, তাহলে Map থেকে Person Bean-এ nested properties সেট করা যাবে।
import org.apache.commons.beanutils.BeanUtils;
import java.util.HashMap;
import java.util.Map;
public class MapToBeanWithNestedExample {
public static void main(String[] args) {
try {
// Create a Map with nested properties
Map<String, Object> personMap = new HashMap<>();
personMap.put("name", "John");
personMap.put("age", 30);
personMap.put("address.street", "Street 123");
personMap.put("address.city", "City A");
// Create a Person object (target bean)
Person person = new Person();
// Use BeanUtils to populate the Person object from the Map
BeanUtils.populate(person, personMap);
// Output the properties of the populated Person object
System.out.println("Name: " + person.getName()); // Output: John
System.out.println("Age: " + person.getAge()); // Output: 30
System.out.println("Street: " + person.getAddress().getStreet()); // Output: Street 123
System.out.println("City: " + person.getAddress().getCity()); // Output: City A
} catch (Exception e) {
e.printStackTrace();
}
}
}ব্যাখ্যা:
- Map<String, Object> personMap: এখানে
Map-এ nested properties যেমনaddress.streetএবংaddress.cityযোগ করা হয়েছে। - BeanUtils.populate():
address.streetএবংaddress.cityযথাক্রমেAddressBean-এরstreetএবংcityপ্রপার্টিতে সেট করা হয়েছে। - Dot notation ব্যবহার করে nested properties কপি করা হয়েছে।
সারাংশ
- Map থেকে Bean-এ ডেটা সেট করা খুবই কার্যকর এবং সহজ পদ্ধতি যা ডেটা ট্রান্সফার এবং ম্যাপিংয়ের জন্য ব্যবহৃত হয়।
- Apache Commons BeanUtils এর
populate()মেথড ব্যবহার করে Map থেকে Java Bean-এ ডেটা সহজে সেট করা যায়। - Dot notation ব্যবহার করে nested properties সহজে সেট করা সম্ভব।
- BeanUtils.populate() মেথডটি getter/setter মেথডের মাধ্যমে প্রপার্টি অ্যাক্সেস করে Map থেকে ডেটা Bean-এ সেট করে।
এই পদ্ধতি সাধারণত API integration, data transfer এবং configuration mapping এর জন্য ব্যবহৃত হয়।
Read more