Apache Commons BeanUtils লাইব্রেরি ব্যবহার করে আপনি সহজেই একটি Bean-এর মধ্যে থাকা Nested Bean এর ডেটা কপি বা ট্রান্সফার করতে পারেন। BeanUtils নেস্টেড প্রপার্টি হ্যান্ডল করার জন্য খুবই কার্যকর। এটি আপনাকে একটি Object-এর Nested Properties কপি বা ম্যানিপুলেট করার সুবিধা দেয়।
কাজের ধাপ
- Nested Bean তৈরি করা: একটি Bean-এর প্রপার্টি হিসেবে আরেকটি Bean যুক্ত করা।
- BeanUtils.copyProperties() ব্যবহার: Parent Bean থেকে Target Bean-এ ডেটা ট্রান্সফার করা।
- Nested Properties Access এবং Manipulation: Nested প্রপার্টির ডেটা Access এবং পরিবর্তন করা।
উদাহরণ: Nested Bean এর Data Transfer
১. Bean তৈরি করা
public class Person {
private String name;
private int age;
private Address address;
public Person() {}
public Person(String name, int age, Address address) {
this.name = name;
this.age = age;
this.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;
}
}
class Address {
private String street;
private String city;
public Address() {}
public Address(String street, String city) {
this.street = street;
this.city = 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;
}
}২. Nested Bean এর Data Transfer করা
import org.apache.commons.beanutils.BeanUtils;
public class NestedBeanExample {
public static void main(String[] args) {
try {
// Source Bean
Address address = new Address("123 Main St", "City A");
Person sourcePerson = new Person("John Doe", 25, address);
// Target Bean
Person targetPerson = new Person();
// Copy properties from source to target
BeanUtils.copyProperties(targetPerson, sourcePerson);
// Output the copied properties
System.out.println("Target Name: " + targetPerson.getName());
System.out.println("Target Age: " + targetPerson.getAge());
System.out.println("Target Street: " + targetPerson.getAddress().getStreet());
System.out.println("Target City: " + targetPerson.getAddress().getCity());
} catch (Exception e) {
e.printStackTrace();
}
}
}আউটপুট:
Target Name: John Doe
Target Age: 25
Target Street: 123 Main St
Target City: City Aব্যাখ্যা:
- Source Bean তৈরি করা:
sourcePerson-এর মধ্যেAddressএকটি Nested Bean হিসেবে যুক্ত। - BeanUtils.copyProperties(): এই মেথড Parent Bean (
sourcePerson) থেকে Target Bean (targetPerson)-এ ডেটা কপি করে। - Nested Properties কপি:
sourcePersonBean এরaddressপ্রপার্টিরstreetএবংcityভ্যালুtargetPerson-এ কপি করা হয়েছে।
Nested Properties Access এবং Manipulation
BeanUtils ব্যবহার করে আপনি Nested Properties সরাসরি Access এবং Manipulate করতে পারেন। এর জন্য PropertyUtils ব্যবহার করা যায়।
Nested Properties Access করা
import org.apache.commons.beanutils.PropertyUtils;
public class NestedPropertyAccessExample {
public static void main(String[] args) {
try {
// Create Source Bean
Address address = new Address("456 Elm St", "City B");
Person person = new Person("Jane Doe", 30, address);
// Access Nested Properties
String street = (String) PropertyUtils.getNestedProperty(person, "address.street");
String city = (String) PropertyUtils.getNestedProperty(person, "address.city");
// Modify Nested Properties
PropertyUtils.setNestedProperty(person, "address.street", "789 Pine St");
// Output the updated properties
System.out.println("Street: " + street); // Output: 456 Elm St
System.out.println("City: " + city); // Output: City B
System.out.println("Updated Street: " + person.getAddress().getStreet()); // Output: 789 Pine St
} catch (Exception e) {
e.printStackTrace();
}
}
}আউটপুট:
Street: 456 Elm St
City: City B
Updated Street: 789 Pine StPropertyUtils এবং BeanUtils এর পার্থক্য
| বৈশিষ্ট্য | BeanUtils | PropertyUtils |
|---|---|---|
| টাইপ কনভার্সন | টাইপ কনভার্সন সাপোর্ট করে। | টাইপ কনভার্সন সাপোর্ট করে না। |
| Nested Properties Access | সরাসরি Nested Properties অ্যাক্সেস করা যায় না। | সরাসরি Nested Properties অ্যাক্সেস এবং পরিবর্তন করা যায়। |
| ব্যবহার | প্রপার্টি কপি করার জন্য বেশি কার্যকর। | প্রপার্টি অ্যাক্সেস এবং ম্যানিপুলেশন। |
সারাংশ
- BeanUtils.copyProperties() Nested Bean থেকে Parent Bean-এ ডেটা কপি করার জন্য ব্যবহার করা হয়।
- PropertyUtils Nested Properties সরাসরি Access এবং Manipulate করার জন্য বেশি কার্যকর।
- Nested Bean এর ডেটা ট্রান্সফার এবং ম্যানিপুলেশনের জন্য BeanUtils এবং PropertyUtils উভয়ই গুরুত্বপূর্ণ টুল। আপনার কাজের ধরণ অনুযায়ী এগুলোর ব্যবহার নির্বাচন করুন।
Content added || updated By
Read more