Nested Properties এবং Indexed Properties এর ব্যবহার

Bean Property Access (বিন প্রপার্টি অ্যাক্সেস) - জাভা বীনইউটিলস (Java BeanUtils) - Computer Programming

352

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;
    }
}

ব্যাখ্যা:

  1. PropertyUtils.getProperty() ব্যবহার করে address.street এবং address.city অ্যাক্সেস করা হয়েছে।
  2. 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;
    }
}

ব্যাখ্যা:

  1. PropertyUtils.getIndexedProperty() ব্যবহার করে phoneNumbers[0] এবং phoneNumbers[1] অ্যাক্সেস করা হয়েছে।
  2. PropertyUtils.setIndexedProperty() ব্যবহার করে phoneNumbers[0] এর মান পরিবর্তন করা হয়েছে।

Nested এবং Indexed Properties এর পার্থক্য

বৈশিষ্ট্যNested PropertiesIndexed 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 ম্যানিপুলেট করতে পারবেন।

Content added || updated By
Promotion

Are you sure to start over?

Loading...