BeanUtils.copyProperties() মেথড হল Apache Commons BeanUtils লাইব্রেরির একটি শক্তিশালী ফিচার, যা এক Java Bean থেকে অন্য Java Bean-এ প্রপার্টি কপি করার জন্য ব্যবহৃত হয়। এই মেথডটি খুবই কার্যকরী এবং সহজে একটি অবজেক্টের প্রপার্টি অন্য অবজেক্টে কপি করতে সহায়তা করে, বিশেষত যখন দুটি অবজেক্টের মধ্যে প্রপার্টির নাম এবং টাইপ একই থাকে।
BeanUtils.copyProperties() মেথডের মূল সুবিধা:
- প্রপার্টি কপি করা: একটি অবজেক্ট থেকে অন্য অবজেক্টে প্রপার্টি কপি করার জন্য ব্যবহার করা হয়।
- টাইপ কনভার্সন: এটি কিছু পরিমাণ টাইপ কনভার্সনও করতে পারে, যেমন
StringথেকেIntegerবাDateটাইপ কনভার্সন। - নেস্টেড প্রপার্টি সাপোর্ট: এটি nested properties (অর্থাৎ, এক অবজেক্টের মধ্যে আরেক অবজেক্ট) কপি করতে পারে।
- সহজ ব্যবহার: সাধারণত
getterএবংsetterমেথড ব্যবহার করতে হয়, কিন্তুBeanUtils.copyProperties()খুব সহজভাবে ডেটা কপি করতে সাহায্য করে।
BeanUtils.copyProperties() এর সেন্ট্যাক্স:
BeanUtils.copyProperties(Object dest, Object orig);dest: গন্তব্য অবজেক্ট যেখানে প্রপার্টি কপি করা হবে।orig: উৎস অবজেক্ট যা থেকে প্রপার্টি কপি করা হবে।
এই মেথডটি উৎস অবজেক্টের সমস্ত প্রপার্টি কপি করে গন্তব্য অবজেক্টে, যেখানে নাম এবং টাইপ মিল থাকে।
BeanUtils.copyProperties() এর ব্যবহারিক উদাহরণ
উদাহরণ ১: সাধারণ প্রপার্টি কপি
import org.apache.commons.beanutils.BeanUtils;
public class BeanUtilsExample {
public static void main(String[] args) {
try {
// Source object
Person source = new Person("John", 25);
// 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: 25
} 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;
}
}ব্যাখ্যা:
sourceথেকেtargetঅবজেক্টে প্রপার্টি কপি করার জন্যBeanUtils.copyProperties()মেথড ব্যবহার করা হয়েছে।- এখানে name এবং age প্রপার্টি কপি করা হয়েছে।
উদাহরণ ২: টাইপ কনভার্সন সহ প্রপার্টি কপি
import org.apache.commons.beanutils.BeanUtils;
public class BeanUtilsTypeConversionExample {
public static void main(String[] args) {
try {
// Source object with String property
Employee source = new Employee("E123", "John Doe", "50000");
// Target object
Employee target = new Employee();
// Copy properties from source to target with type conversion
BeanUtils.copyProperties(target, source);
// Output the copied properties
System.out.println("Target Employee ID: " + target.getEmployeeId()); // Output: E123
System.out.println("Target Name: " + target.getEmployeeName()); // Output: John Doe
System.out.println("Target Salary: " + target.getSalary()); // Output: 50000.0
} catch (Exception e) {
e.printStackTrace();
}
}
}
class Employee {
private String employeeId;
private String employeeName;
private double salary;
// Constructor, getter and setter methods
public Employee() {}
public Employee(String employeeId, String employeeName, String salary) {
this.employeeId = employeeId;
this.employeeName = employeeName;
this.salary = Double.parseDouble(salary); // Converting String to double
}
public String getEmployeeId() {
return employeeId;
}
public void setEmployeeId(String employeeId) {
this.employeeId = employeeId;
}
public String getEmployeeName() {
return employeeName;
}
public void setEmployeeName(String employeeName) {
this.employeeName = employeeName;
}
public double getSalary() {
return salary;
}
public void setSalary(double salary) {
this.salary = salary;
}
}ব্যাখ্যা:
Employeeক্লাসেsalaryএকটিStringহিসেবে দেয়া আছে, কিন্তুEmployeeঅবজেক্টে তাdoubleটাইপে কনভার্ট করা হয়েছে।BeanUtils.copyProperties()মেথড টাইপ কনভার্সন করে, অর্থাৎ,Stringথেকেdoubleটাইপে কনভার্ট করে প্রপার্টি কপি করবে।
উদাহরণ ৩: নেস্টেড প্রপার্টি কপি
import org.apache.commons.beanutils.BeanUtils;
public class NestedPropertyExample {
public static void main(String[] args) {
try {
// Create Address object
Address address1 = new Address("Street 123", "City A");
// Create Person object with nested Address object
Person person1 = new Person("John", 30, address1);
// Target Person object
Person person2 = new Person();
// Copy properties including nested Address
BeanUtils.copyProperties(person2, person1);
// Output copied properties including nested object
System.out.println("Name: " + person2.getName()); // Output: John
System.out.println("Age: " + person2.getAge()); // Output: 30
System.out.println("Address: " + person2.getAddress().getStreet()); // Output: Street 123
} catch (Exception e) {
e.printStackTrace();
}
}
}
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(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;
}
}ব্যাখ্যা:
- এখানে
Personক্লাসে একটিAddressঅবজেক্ট অন্তর্ভুক্ত আছে।BeanUtils.copyProperties()মেথড ব্যবহার করে,Addressক্লাসের প্রপার্টি কপি করা হচ্ছে। - nested property হিসেবে
address.streetকপি হচ্ছে।
সারাংশ
BeanUtils.copyProperties()মেথড Java Bean-এ প্রপার্টি কপি করার একটি শক্তিশালী এবং সহজ পদ্ধতি।- এটি টাইপ কনভার্সন এবং নেস্টেড প্রপার্টি কপি সাপোর্ট করে, যা ডেটা ম্যানিপুলেশনকে অনেক সহজ করে দেয়।
BeanUtils.copyProperties()বিভিন্ন ডেটা ট্রান্সফার, টেস্টিং, এবং বিভিন্ন Java অবজেক্টের মধ্যে যোগাযোগের জন্য একটি গুরুত্বপূর্ণ টুল।
Content added || updated By
Read more