PropertyUtils.getNestedProperty() এর ব্যবহার

Nested Beans Handling (নেস্টেড বিন হ্যান্ডলিং) - জাভা বীনইউটিলস (Java BeanUtils) - Computer Programming

284

Apache Commons BeanUtils লাইব্রেরির PropertyUtils.getNestedProperty() মেথডটি একটি nested property অ্যাক্সেস করার জন্য ব্যবহৃত হয়। এটি একটি নির্দিষ্ট প্রপার্টি বা ফিল্ডকে অ্যাক্সেস করতে সহায়তা করে, যা অন্য কোন অবজেক্টের মধ্যে থাকে। অর্থাৎ, একটি Java Bean এর মধ্যে অন্য একটি Bean (nested Bean) থাকতে পারে এবং এই মেথডটি সেটি অ্যাক্সেস করতে ব্যবহৃত হয়।

Syntax:

public static Object getNestedProperty(Object bean, String name) throws IllegalAccessException, InvocationTargetException, NoSuchMethodException
  • bean: Bean অবজেক্ট, যেখানে প্রপার্টি খোঁজা হবে।
  • name: প্রপার্টি বা nested প্রপার্টির নাম, এটি পয়েন্টার হিসেবে কাজ করে, যেখানে nested properties পিরামিডের মতো লেখা হয়। (যেমন "address.street")

Return Value:

  • এটি প্রপার্টির মান রিটার্ন করে, যদি এটি পাওয়া যায়। যদি প্রপার্টি না থাকে, তাহলে NoSuchMethodException বা IllegalAccessException ছুঁড়ে দেওয়া হয়।

PropertyUtils.getNestedProperty() এর উদাহরণ

উদাহরণ ১: Nested Property অ্যাক্সেস করা

ধরা যাক, আমাদের কাছে দুটি Bean আছে: Person এবং AddressPerson Bean-এ একটি Address Bean রয়েছে, এবং আমরা PropertyUtils.getNestedProperty() মেথড ব্যবহার করে Address Bean এর প্রপার্টি (যেমন street) অ্যাক্সেস করতে পারব।

import org.apache.commons.beanutils.PropertyUtils;

public class NestedPropertyExample {
    public static void main(String[] args) {
        try {
            // Create Address object
            Address address = new Address("Street 123", "City A");

            // Create Person object with nested Address object
            Person person = new Person("John", 30, address);

            // Accessing nested properties using PropertyUtils.getNestedProperty()
            String street = (String) PropertyUtils.getNestedProperty(person, "address.street");
            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;
    }

    // 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.getNestedProperty(person, "address.street") ব্যবহার করে, আমরা Person Bean এর মধ্যে থাকা nested Address Bean এর street প্রপার্টি অ্যাক্সেস করেছি।
  2. এটি Address Bean এর street প্রপার্টি রিটার্ন করবে, যেটি Street 123

উদাহরণ ২: Nested Property Access with Nested Levels

ধরা যাক, আরো গভীর nested প্রপার্টি অ্যাক্সেস করতে চাই। যেমন Person Bean এর মধ্যে Address Bean এবং তার ভিতরে City নামে আরো একটি nested প্রপার্টি রয়েছে।

import org.apache.commons.beanutils.PropertyUtils;

public class MultiLevelNestedPropertyExample {
    public static void main(String[] args) {
        try {
            // Create Address object
            Address address = new Address("Street 123", "City A");

            // Create Person object with nested Address object
            Person person = new Person("John", 30, address);

            // Accessing multiple levels of nested properties
            String city = (String) PropertyUtils.getNestedProperty(person, "address.city");
            System.out.println("City: " + city);  // Output: City A
        } catch (Exception e) {
            e.printStackTrace();
        }
    }
}

ব্যাখ্যা:

  • এখানে PropertyUtils.getNestedProperty() ব্যবহার করে আমরা Person Bean এর মধ্যে থাকা Address Bean এর ভিতরে থাকা city প্রপার্টি অ্যাক্সেস করেছি।

PropertyUtils.getNestedProperty() এর সুবিধা

  1. Nested Property Access: এটি একটি Bean এর মধ্যে থাকা অন্য Bean এর প্রপার্টি অ্যাক্সেস করতে সক্ষম।
  2. Multiple Nested Levels: আপনি একাধিক স্তরের nested properties অ্যাক্সেস করতে পারেন, যেমন "address.city"
  3. Efficient and Clean Code: এটি আপনার কোডকে অনেক বেশি পরিষ্কার এবং কার্যকরী করে, বিশেষত যখন Bean গুলোর মধ্যে nested properties থাকে।

PropertyUtils.getNestedProperty() এবং BeanUtils Bean

  • BeanUtils সাধারণত Bean এর মধ্যে ডেটা কপি করার জন্য ব্যবহৃত হয়, যখন PropertyUtils একটি নির্দিষ্ট প্রপার্টি (অথবা nested property) অ্যাক্সেস করার জন্য ব্যবহৃত হয়।
  • PropertyUtils.getNestedProperty() আপনাকে nested properties অ্যাক্সেস করার জন্য একটি সহজ এবং কার্যকরী পদ্ধতি প্রদান করে, যা একাধিক Bean এর মধ্যে সম্পর্কিত ডেটা অ্যাক্সেস করতে সাহায্য করে।

সারাংশ

PropertyUtils.getNestedProperty() একটি অত্যন্ত কার্যকরী মেথড যা আপনাকে Java Bean এর মধ্যে থাকা nested properties অ্যাক্সেস করতে সাহায্য করে। এটি Bean এর মধ্যে অন্য Bean এর প্রপার্টি অ্যাক্সেস এবং বিভিন্ন স্তরের nested properties সমর্থন করে, যা ডেটা ম্যানিপুলেশন এবং কপি করার ক্ষেত্রে আরও সুবিধাজনক হয়।

Content added || updated By
Promotion

Are you sure to start over?

Loading...