Apache Commons BeanUtils এবং PropertyUtils দুটি জনপ্রিয় Java লাইব্রেরি যা Java Beans এবং অন্যান্য objects-এর মধ্যে প্রপার্টি কপি এবং ম্যানিপুলেশন কাজকে সহজ করে তোলে। এই লাইব্রেরি দুটি অনেক ক্ষেত্রে ব্যবহৃত হয়, যেমন ডেটা কপি, টাইপ কনভার্সন, এবং নেস্টেড প্রপার্টি কপি। চলুন দেখি কিভাবে BeanUtils এবং PropertyUtils ব্যবহার করা যায়।
1. BeanUtils এর ব্যবহার
Apache Commons BeanUtils লাইব্রেরি সাধারণত Java Bean-এর মধ্যে প্রপার্টি কপি এবং টাইপ কনভার্সন করার জন্য ব্যবহৃত হয়।
উদাহরণ: BeanUtils ব্যবহার করে প্রপার্টি কপি করা
import org.apache.commons.beanutils.BeanUtils;
public class BeanUtilsExample {
public static void main(String[] args) {
try {
// Source object
Person source = new Person("John", 30);
// Target object
Person target = new Person();
// Copy properties from source to target
BeanUtils.copyProperties(target, source);
// Output the copied properties
System.out.println("Target Name: " + target.getName()); // Output: John
System.out.println("Target Age: " + target.getAge()); // Output: 30
} catch (Exception e) {
e.printStackTrace();
}
}
}
class Person {
private String name;
private int age;
// Constructor, getter and setter methods
public Person() {}
public Person(String name, int age) {
this.name = name;
this.age = age;
}
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() মেথড ব্যবহার করা হয়েছে
sourceথেকেtargetঅবজেক্টে প্রপার্টি কপি করার জন্য। - এখানে name এবং age প্রপার্টি কপি করা হয়েছে
sourceথেকেtargetএ।
BeanUtils এ টাইপ কনভার্সনও সম্ভব, যেমন String থেকে Integer কনভার্ট করা, তবে এটি setter এবং getter মেথডের মাধ্যমে কাজ করে।
2. PropertyUtils এর ব্যবহার
PropertyUtils ক্লাসও Apache Commons BeanUtils লাইব্রেরির অংশ এবং এটি getter/setter মেথডের সাথে কাজ করার জন্য ব্যবহৃত হয়। তবে BeanUtils-এর থেকে এটি কিছুটা আলাদা, কারণ এটি শুধুমাত্র property manipulation এর জন্য ব্যবহৃত হয়, এবং nested properties এর সাপোর্ট দেয়।
উদাহরণ: PropertyUtils ব্যবহার করে প্রপার্টি অ্যাক্সেস করা
import org.apache.commons.beanutils.PropertyUtils;
public class PropertyUtilsExample {
public static void main(String[] args) {
try {
// Create a Person object with Address (nested property)
Address address = new Address("Street 123", "City A");
Person person = new Person("John", 30, address);
// Access properties using PropertyUtils
String name = (String) PropertyUtils.getProperty(person, "name");
int age = (int) PropertyUtils.getProperty(person, "age");
String street = (String) PropertyUtils.getProperty(person, "address.street");
// Output the properties
System.out.println("Name: " + name); // Output: John
System.out.println("Age: " + age); // Output: 30
System.out.println("Street: " + street); // Output: Street 123
} catch (Exception e) {
e.printStackTrace();
}
}
}
class Person {
private String name;
private int age;
private Address address;
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(String street, String city) {
this.street = street;
this.city = city;
}
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;
}
}ব্যাখ্যা:
- PropertyUtils.getProperty() মেথড ব্যবহার করা হয়েছে
personঅবজেক্টের প্রপার্টি অ্যাক্সেস করার জন্য। - এখানে person অবজেক্টের name, age, এবং address.street প্রপার্টি অ্যাক্সেস করা হয়েছে। address.street একটি নেস্টেড প্রপার্টি, যা PropertyUtils দ্বারা সহজেই অ্যাক্সেস করা যায়।
PropertyUtils সাধারণত getter/setter মেথডের মাধ্যমে ডেটা অ্যাক্সেস করতে ব্যবহৃত হয় এবং এটি nested properties সাপোর্ট করে, যেমন আমরা এখানে address.street প্রপার্টি অ্যাক্সেস করেছি।
BeanUtils এবং PropertyUtils এর মধ্যে পার্থক্য
| বৈশিষ্ট্য | BeanUtils | PropertyUtils |
|---|---|---|
| প্রপার্টি কপি | BeanUtils.copyProperties() ব্যবহার করে প্রপার্টি কপি করা হয়। | PropertyUtils শুধুমাত্র property অ্যাক্সেস করার জন্য ব্যবহৃত হয়। |
| টাইপ কনভার্সন | টাইপ কনভার্সন সাপোর্ট করে। | টাইপ কনভার্সন সাপোর্ট করে না। |
| নেস্টেড প্রপার্টি | নেস্টেড প্রপার্টি কপি করতে পারে। | নেস্টেড প্রপার্টি অ্যাক্সেস করতে পারে। |
| ব্যবহার | সাধারণত এক অবজেক্ট থেকে অন্য অবজেক্টে ডেটা কপি করার জন্য ব্যবহৃত হয়। | প্রপার্টি অ্যাক্সেস এবং পরিবর্তন করার জন্য ব্যবহৃত হয়। |
সারাংশ
- BeanUtils এবং PropertyUtils উভয়ই Apache Commons BeanUtils লাইব্রেরির অংশ, তবে তাদের ব্যবহারের উদ্দেশ্য আলাদা।
- BeanUtils সাধারণত ডেটা কপি এবং টাইপ কনভার্সনের জন্য ব্যবহৃত হয়, যেখানে PropertyUtils মূলত প্রপার্টি অ্যাক্সেস এবং নেস্টেড প্রপার্টি হ্যান্ডলিংয়ের জন্য ব্যবহৃত হয়।
- আপনি যখন এক অবজেক্ট থেকে অন্য অবজেক্টে প্রপার্টি কপি করতে চান, তখন BeanUtils ব্যবহার করবেন এবং যখন প্রপার্টি অ্যাক্সেস বা পরিবর্তন করতে চান, তখন PropertyUtils ব্যবহার করবেন।
Read more