Apache Commons BeanUtils এবং Apache Commons PropertyUtils উভয়ই Java Bean-এর মধ্যে প্রপার্টি কপি এবং ম্যানিপুলেশন করার জন্য ব্যবহৃত হয়, তবে তাদের মধ্যে কিছু মৌলিক পার্থক্য রয়েছে।
এখানে BeanUtils এবং PropertyUtils এর মধ্যে প্রধান পার্থক্যগুলো তুলে ধরা হলো:
১. প্রধান উদ্দেশ্য:
- BeanUtils:
BeanUtilsমূলত Java Beans-এর মধ্যে ডেটা কপি, টাইপ কনভার্সন, এবং প্রপার্টি ম্যানিপুলেশন সহজ করার জন্য ডিজাইন করা হয়েছে। এটি Java Bean-এর getter/setter মেথডের মাধ্যমে প্রপার্টি কপি করতে সক্ষম। - PropertyUtils:
PropertyUtilsJava Beans-এর প্রপার্টি অ্যাক্সেস এবং manipulation করতে ব্যবহৃত হয়, তবে এটি অতিরিক্তভাবে ডাইনামিকভাবে প্রপার্টি অ্যাক্সেস এবং ম্যানিপুলেশন করতে সক্ষম, এমনকি getter/setter মেথড ছাড়াও। এটি Reflection-এর মাধ্যমে Java Bean-এর প্রপার্টি সরাসরি অ্যাক্সেস করতে সক্ষম।
২. ব্যবহার:
- BeanUtils:
- BeanUtils সাধারণত Java Bean থেকে অন্য Java Bean-এ প্রপার্টি কপি করার জন্য ব্যবহৃত হয়।
- এটি getter/setter মেথডের সাহায্যে প্রপার্টি অ্যাক্সেস করে এবং সাধারণত object mapping বা data transfer কাজের জন্য ব্যবহৃত হয়।
BeanUtils.copyProperties()মেথডটি Bean থেকে Bean-এ প্রপার্টি কপি করতে ব্যবহৃত হয়।
- PropertyUtils:
- PropertyUtils ব্যবহৃত হয় Java Bean-এর প্রপার্টি অ্যাক্সেস বা ম্যানিপুলেট করতে, এমনকি যদি getter/setter মেথড না থাকে তাও।
- এটি আরও ডাইনামিকভাবে কাজ করে এবং setProperty() বা getProperty() মেথডের মাধ্যমে Java Bean-এর প্রপার্টি সরাসরি অ্যাক্সেস করতে পারে।
- PropertyUtils reflection ব্যবহার করে object-এর প্রপার্টি অ্যাক্সেস করে, এমনকি private field এর ক্ষেত্রেও।
৩. প্রপার্টি অ্যাক্সেস (Property Access):
- BeanUtils:
- BeanUtils শুধুমাত্র getter/setter মেথডের মাধ্যমে প্রপার্টি অ্যাক্সেস করে।
- এটি সাধারণত Java Beans-এর মধ্যে ডেটা কপি বা মান সেট করার জন্য ব্যবহৃত হয়।
- PropertyUtils এর মতো Reflection ব্যবহারের প্রয়োজন হয় না।
- PropertyUtils:
- PropertyUtils Reflection ব্যবহার করে সরাসরি প্রপার্টি অ্যাক্সেস করতে পারে। এটি getter/setter মেথড না থাকলেও কাজ করতে পারে, যেমন private fields বা non-public methods।
- PropertyUtils আরও ডাইনামিক এবং flexibly প্রপার্টি অ্যাক্সেস করে।
৪. ফিচার (Features):
| বৈশিষ্ট্য | BeanUtils | PropertyUtils |
|---|---|---|
| মূল উদ্দেশ্য | Java Bean-এর মধ্যে ডেটা কপি করা | Java Bean-এর প্রপার্টি অ্যাক্সেস এবং ম্যানিপুলেশন |
| getter/setter মেথড | নির্দিষ্ট ফিল্ডের জন্য গেটার এবং সেটার মেথড প্রয়োজন | সরাসরি প্রপার্টি অ্যাক্সেস করতে Reflection ব্যবহার করে |
| ডাইনামিক প্রপার্টি অ্যাক্সেস | না | হ্যাঁ, Reflection ব্যবহার করে প্রপার্টি অ্যাক্সেস করা যায় |
| টাইপ কনভার্সন | হ্যাঁ, টাইপ কনভার্সন করতে সক্ষম | না |
| সার্বজনীন অ্যাক্সেস (Public/Private) | পাবলিক গেটার এবং সেটার মেথডের মাধ্যমে অ্যাক্সেস | গেটার/সেটার না থাকলেও প্রপার্টি অ্যাক্সেস করা যায় |
৫. মেটডের উদাহরণ:
BeanUtils উদাহরণ:
import org.apache.commons.beanutils.BeanUtils;
public class Example {
public static void main(String[] args) throws Exception {
Person person1 = new Person("John", 25);
Person person2 = new Person();
// Copy properties from person1 to person2
BeanUtils.copyProperties(person2, person1);
System.out.println(person2.getName()); // Output: John
System.out.println(person2.getAge()); // Output: 25
}
}
class Person {
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;
}
}PropertyUtils উদাহরণ:
import org.apache.commons.beanutils.PropertyUtils;
public class Example {
public static void main(String[] args) throws Exception {
Person person = new Person("John", 25);
// Get property values dynamically
String name = (String) PropertyUtils.getProperty(person, "name");
int age = (int) PropertyUtils.getProperty(person, "age");
System.out.println(name); // Output: John
System.out.println(age); // Output: 25
// Set property dynamically
PropertyUtils.setProperty(person, "name", "Alice");
PropertyUtils.setProperty(person, "age", 30);
System.out.println(person.getName()); // Output: Alice
System.out.println(person.getAge()); // Output: 30
}
}
class Person {
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:
- BeanUtils getter/setter মেথডের মাধ্যমে প্রপার্টি কপি বা অ্যাক্সেস করে।
- এটি Java Beans-এর মধ্যে ডেটা কপি করার জন্য ব্যবহৃত হয় এবং সাধারণত টাইপ কনভার্সনও করতে সক্ষম।
- PropertyUtils:
- PropertyUtils Reflection ব্যবহার করে Java Bean-এর প্রপার্টি সরাসরি অ্যাক্সেস করতে পারে, এমনকি getter/setter মেথড না থাকলেও।
- এটি আরও ডাইনামিক এবং flexible, এবং getter/setter ছাড়া প্রপার্টি অ্যাক্সেস করা যায়।
যেহেতু BeanUtils সাধারণত Java Beans-এর মধ্যে ডেটা কপি করার জন্য ব্যবহৃত হয়, এবং PropertyUtils ডাইনামিক প্রপার্টি অ্যাক্সেস এবং ম্যানিপুলেশন করার জন্য, আপনাকে যেকোনো একটি ব্যবহার করতে হবে আপনার প্রয়োজন অনুসারে।
Content added || updated By
Read more