Java Bean-এ Nested Properties এবং Indexed Properties ব্যবহার করে জটিল ডেটা ম্যানিপুলেশন সহজ করা যায়। Apache Commons BeanUtils লাইব্রেরি এই কাজগুলো করার জন্য সরঞ্জাম সরবরাহ করে।
1. Nested Properties
Nested Properties এমন প্রপার্টি যা একটি Bean-এর মধ্যে অন্য Bean ধারণ করে। উদাহরণস্বরূপ, যদি Person ক্লাসে একটি Address অবজেক্ট থাকে, তাহলে এটি একটি Nested Property।
উদাহরণ: Nested Properties ব্যবহার
import org.apache.commons.beanutils.PropertyUtils;
public class NestedPropertiesExample {
public static void main(String[] args) {
try {
// Nested Property Example
Address address = new Address("Street 123", "City A");
Person person = new Person("John", 30, address);
// Access Nested Properties
String street = (String) PropertyUtils.getProperty(person, "address.street");
String city = (String) PropertyUtils.getProperty(person, "address.city");
// Modify Nested Properties
PropertyUtils.setProperty(person, "address.street", "New Street 456");
// Output
System.out.println("Street: " + street); // Output: Street 123
System.out.println("City: " + city); // Output: City A
System.out.println("Updated Street: " + person.getAddress().getStreet()); // Output: New Street 456
} 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;
}
// 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;
}
}ব্যাখ্যা:
- PropertyUtils.getProperty() ব্যবহার করে
address.streetএবংaddress.cityঅ্যাক্সেস করা হয়েছে। - PropertyUtils.setProperty() ব্যবহার করে
address.streetপরিবর্তন করা হয়েছে।
2. Indexed Properties
Indexed Properties হল Bean-এর মধ্যে Array বা List টাইপের প্রপার্টি। এটি Array/List-এর নির্দিষ্ট ইনডেক্সের মান অ্যাক্সেস বা পরিবর্তন করতে ব্যবহৃত হয়।
উদাহরণ: Indexed Properties ব্যবহার
import org.apache.commons.beanutils.PropertyUtils;
import java.util.ArrayList;
import java.util.List;
public class IndexedPropertiesExample {
public static void main(String[] args) {
try {
// Indexed Property Example
Person person = new Person("John", 30);
// Add phone numbers to the list
List<String> phoneNumbers = new ArrayList<>();
phoneNumbers.add("123456789");
phoneNumbers.add("987654321");
person.setPhoneNumbers(phoneNumbers);
// Access Indexed Properties
String firstPhone = (String) PropertyUtils.getIndexedProperty(person, "phoneNumbers[0]");
String secondPhone = (String) PropertyUtils.getIndexedProperty(person, "phoneNumbers[1]");
// Modify Indexed Properties
PropertyUtils.setIndexedProperty(person, "phoneNumbers[0]", "111111111");
// Output
System.out.println("First Phone: " + firstPhone); // Output: 123456789
System.out.println("Second Phone: " + secondPhone); // Output: 987654321
System.out.println("Updated First Phone: " + person.getPhoneNumbers().get(0)); // Output: 111111111
} catch (Exception e) {
e.printStackTrace();
}
}
}
class Person {
private String name;
private int age;
private List<String> phoneNumbers;
public Person(String name, int age) {
this.name = name;
this.age = age;
this.phoneNumbers = new ArrayList<>();
}
// 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 List<String> getPhoneNumbers() {
return phoneNumbers;
}
public void setPhoneNumbers(List<String> phoneNumbers) {
this.phoneNumbers = phoneNumbers;
}
}ব্যাখ্যা:
- PropertyUtils.getIndexedProperty() ব্যবহার করে
phoneNumbers[0]এবংphoneNumbers[1]অ্যাক্সেস করা হয়েছে। - PropertyUtils.setIndexedProperty() ব্যবহার করে
phoneNumbers[0]এর মান পরিবর্তন করা হয়েছে।
Nested এবং Indexed Properties এর পার্থক্য
| বৈশিষ্ট্য | Nested Properties | Indexed Properties |
|---|---|---|
| ডেটা টাইপ | Bean বা Object-এর মধ্যে অন্য Bean বা Object। | Array বা List টাইপের প্রপার্টি। |
| অ্যাক্সেস করার পদ্ধতি | PropertyUtils.getProperty() এবং setProperty()। | PropertyUtils.getIndexedProperty() এবং setIndexedProperty()। |
| ব্যবহার | Bean এর নেস্টেড প্রপার্টি অ্যাক্সেস বা পরিবর্তনের জন্য। | Array বা List এর নির্দিষ্ট ইনডেক্স অ্যাক্সেস বা পরিবর্তনের জন্য। |
সারাংশ
- Nested Properties ব্যবহার করা হয় এক Bean এর মধ্যে থাকা অন্য Bean-এর প্রপার্টি অ্যাক্সেস বা পরিবর্তন করতে।
- Indexed Properties ব্যবহার করা হয় Array বা List টাইপের প্রপার্টি অ্যাক্সেস বা পরিবর্তন করতে।
- Apache Commons BeanUtils লাইব্রেরি
PropertyUtilsএর মাধ্যমে Nested এবং Indexed Properties সহজে হ্যান্ডল করার পদ্ধতি প্রদান করে।
উপরের উদাহরণগুলো ব্যবহার করে আপনি সহজেই Bean-এর Nested এবং Indexed Properties ম্যানিপুলেট করতে পারবেন।
Read more