BeanUtils.describe() এবং PropertyUtils.describe() এর ব্যবহার

Bean Map Creation (বিন ম্যাপ তৈরি করা) - জাভা বীনইউটিলস (Java BeanUtils) - Computer Programming

333

Apache Commons BeanUtils এবং PropertyUtils লাইব্রেরিগুলোর describe() মেথড ব্যবহার করে আপনি সহজেই একটি Bean-এর সমস্ত প্রপার্টি এবং তাদের মানগুলোকে একটি Map-এ পরিণত করতে পারেন। এই মেথডগুলো ডায়নামিক অ্যাপ্লিকেশন তৈরি করার জন্য কার্যকর, যেখানে Bean-এর প্রপার্টি সম্পর্কে runtime-এ তথ্য সংগ্রহ প্রয়োজন হয়।


1. BeanUtils.describe()

বর্ণনা:

  • BeanUtils.describe() একটি Bean-এর সকল প্রপার্টি এবং তাদের মানকে একটি Map<String, String>-এ রূপান্তর করে।
  • এটি getter মেথডগুলোর মাধ্যমে প্রপার্টিগুলোর মান সংগ্রহ করে এবং মানগুলো সবসময় String ফরম্যাটে থাকে।
  • এটি টাইপ কনভার্সন করে, তাই প্রপার্টিগুলো String হিসেবে রিটার্ন হয়।

সিনট্যাক্স:

Map<String, String> BeanUtils.describe(Object bean) throws Exception;

উদাহরণ: BeanUtils.describe()

import org.apache.commons.beanutils.BeanUtils;
import java.util.Map;

public class BeanUtilsDescribeExample {
    public static void main(String[] args) {
        try {
            // Create a Person object
            Person person = new Person("John", 30);

            // Describe the Person object as a Map
            Map<String, String> properties = BeanUtils.describe(person);

            // Print the properties
            for (Map.Entry<String, String> entry : properties.entrySet()) {
                System.out.println(entry.getKey() + ": " + entry.getValue());
            }
        } catch (Exception e) {
            e.printStackTrace();
        }
    }
}

class Person {
    private String name;
    private int age;

    public Person() {}

    public Person(String name, int age) {
        this.name = name;
        this.age = 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;
    }
}

আউটপুট:

class: Person
name: John
age: 30

ব্যাখ্যা:

  • class প্রপার্টি Bean-এর ক্লাসের নাম দেখায়।
  • name এবং age প্রপার্টি Bean-এর গেটার মেথড থেকে প্রাপ্ত মান।

2. PropertyUtils.describe()

বর্ণনা:

  • PropertyUtils.describe() একটি Bean-এর সকল প্রপার্টি এবং তাদের মানকে একটি Map<String, Object>-এ রূপান্তর করে।
  • এটি টাইপ কনভার্সন করে না। প্রপার্টিগুলোর আসল টাইপ বজায় থাকে।
  • এটি getter মেথডের মাধ্যমে প্রপার্টির মান সংগ্রহ করে।

সিনট্যাক্স:

Map<String, Object> PropertyUtils.describe(Object bean) throws Exception;

উদাহরণ: PropertyUtils.describe()

import org.apache.commons.beanutils.PropertyUtils;
import java.util.Map;

public class PropertyUtilsDescribeExample {
    public static void main(String[] args) {
        try {
            // Create a Person object
            Person person = new Person("John", 30);

            // Describe the Person object as a Map
            Map<String, Object> properties = PropertyUtils.describe(person);

            // Print the properties
            for (Map.Entry<String, Object> entry : properties.entrySet()) {
                System.out.println(entry.getKey() + ": " + entry.getValue());
            }
        } catch (Exception e) {
            e.printStackTrace();
        }
    }
}

class Person {
    private String name;
    private int age;

    public Person() {}

    public Person(String name, int age) {
        this.name = name;
        this.age = 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;
    }
}

আউটপুট:

class: Person
name: John
age: 30

ব্যাখ্যা:

  • class প্রপার্টি Bean-এর ক্লাসের নাম দেখায়।
  • প্রপার্টিগুলোর মান তাদের আসল টাইপ বজায় রাখে (যেমন, age একটি Integer থাকবে)।

BeanUtils.describe() বনাম PropertyUtils.describe()

বৈশিষ্ট্যBeanUtils.describe()PropertyUtils.describe()
আউটপুট টাইপMap<String, String>Map<String, Object>
টাইপ কনভার্সনপ্রপার্টিগুলো String ফরম্যাটে রূপান্তরিত হয়।প্রপার্টিগুলোর আসল টাইপ বজায় থাকে।
ব্যবহার ক্ষেত্রযখন প্রপার্টিগুলো String ফরম্যাটে প্রয়োজন।টাইপ কনভার্সন ছাড়া প্রপার্টি মান প্রয়োজন।
Nested PropertiesNested প্রপার্টিগুলোর মান সরাসরি এক্সেস করা যায় না।Nested প্রপার্টিগুলোর মান সরাসরি এক্সেস করা যায় না।
উদ্দেশ্যসাধারণত ডেটা ডিবাগিং বা লগিং এর জন্য ব্যবহৃত।টাইপ কনভার্সন ছাড়াই ডেটা প্রসেসিং।

Nested Properties এর সীমাবদ্ধতা

  • BeanUtils.describe() বা PropertyUtils.describe() সরাসরি Nested Properties হ্যান্ডল করে না। তবে আপনি Nested Properties ম্যানুয়ালি এক্সেস করতে পারেন:

উদাহরণ:

String street = (String) PropertyUtils.getNestedProperty(person, "address.street");

সারাংশ

  • BeanUtils.describe() এবং PropertyUtils.describe() একটি Bean-এর প্রপার্টিগুলোর তালিকা তৈরি করতে ব্যবহার করা হয়।
  • BeanUtils.describe() প্রপার্টিগুলোর মান সবসময় String হিসেবে প্রদান করে, যেখানে PropertyUtils.describe() আসল টাইপ বজায় রাখে।
  • Bean-এর ডায়নামিক ডেটা ম্যানিপুলেশনে এই মেথডগুলো কার্যকরী। টাইপ কনভার্সনের প্রয়োজন অনুযায়ী এই দুটি মেথডের একটি বেছে নিন।
Content added || updated By
Promotion

Are you sure to start over?

Loading...