BeanUtils এবং PropertyUtils এর ব্যবহারিক উদাহরণ

PropertyUtils vs BeanUtils (প্রপার্টি ইউটিলস বনাম বিন ইউটিলস) - জাভা বীনইউটিলস (Java BeanUtils) - Computer Programming

328

Apache Commons BeanUtils এবং PropertyUtils দুটি জনপ্রিয় Java লাইব্রেরি যা Java Beans এবং অন্যান্য objects-এর মধ্যে প্রপার্টি কপি এবং ম্যানিপুলেশন কাজকে সহজ করে তোলে। এই লাইব্রেরি দুটি অনেক ক্ষেত্রে ব্যবহৃত হয়, যেমন ডেটা কপি, টাইপ কনভার্সন, এবং নেস্টেড প্রপার্টি কপি। চলুন দেখি কিভাবে BeanUtils এবং PropertyUtils ব্যবহার করা যায়।


1. BeanUtils এর ব্যবহার

Apache Commons BeanUtils লাইব্রেরি সাধারণত Java Bean-এর মধ্যে প্রপার্টি কপি এবং টাইপ কনভার্সন করার জন্য ব্যবহৃত হয়।

উদাহরণ: BeanUtils ব্যবহার করে প্রপার্টি কপি করা

import org.apache.commons.beanutils.BeanUtils;

public class BeanUtilsExample {
    public static void main(String[] args) {
        try {
            // Source object
            Person source = new Person("John", 30);

            // 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: 30
        } 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;
    }
}

ব্যাখ্যা:

  1. BeanUtils.copyProperties() মেথড ব্যবহার করা হয়েছে source থেকে target অবজেক্টে প্রপার্টি কপি করার জন্য।
  2. এখানে name এবং age প্রপার্টি কপি করা হয়েছে source থেকে target এ।

BeanUtils এ টাইপ কনভার্সনও সম্ভব, যেমন String থেকে Integer কনভার্ট করা, তবে এটি setter এবং getter মেথডের মাধ্যমে কাজ করে।


2. PropertyUtils এর ব্যবহার

PropertyUtils ক্লাসও Apache Commons BeanUtils লাইব্রেরির অংশ এবং এটি getter/setter মেথডের সাথে কাজ করার জন্য ব্যবহৃত হয়। তবে BeanUtils-এর থেকে এটি কিছুটা আলাদা, কারণ এটি শুধুমাত্র property manipulation এর জন্য ব্যবহৃত হয়, এবং nested properties এর সাপোর্ট দেয়।

উদাহরণ: PropertyUtils ব্যবহার করে প্রপার্টি অ্যাক্সেস করা

import org.apache.commons.beanutils.PropertyUtils;

public class PropertyUtilsExample {
    public static void main(String[] args) {
        try {
            // Create a Person object with Address (nested property)
            Address address = new Address("Street 123", "City A");
            Person person = new Person("John", 30, address);

            // Access properties using PropertyUtils
            String name = (String) PropertyUtils.getProperty(person, "name");
            int age = (int) PropertyUtils.getProperty(person, "age");
            String street = (String) PropertyUtils.getProperty(person, "address.street");

            // Output the properties
            System.out.println("Name: " + name);        // Output: John
            System.out.println("Age: " + age);          // Output: 30
            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;
    }

    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() মেথড ব্যবহার করা হয়েছে person অবজেক্টের প্রপার্টি অ্যাক্সেস করার জন্য।
  2. এখানে person অবজেক্টের name, age, এবং address.street প্রপার্টি অ্যাক্সেস করা হয়েছে। address.street একটি নেস্টেড প্রপার্টি, যা PropertyUtils দ্বারা সহজেই অ্যাক্সেস করা যায়।

PropertyUtils সাধারণত getter/setter মেথডের মাধ্যমে ডেটা অ্যাক্সেস করতে ব্যবহৃত হয় এবং এটি nested properties সাপোর্ট করে, যেমন আমরা এখানে address.street প্রপার্টি অ্যাক্সেস করেছি।


BeanUtils এবং PropertyUtils এর মধ্যে পার্থক্য

বৈশিষ্ট্যBeanUtilsPropertyUtils
প্রপার্টি কপিBeanUtils.copyProperties() ব্যবহার করে প্রপার্টি কপি করা হয়।PropertyUtils শুধুমাত্র property অ্যাক্সেস করার জন্য ব্যবহৃত হয়।
টাইপ কনভার্সনটাইপ কনভার্সন সাপোর্ট করে।টাইপ কনভার্সন সাপোর্ট করে না।
নেস্টেড প্রপার্টিনেস্টেড প্রপার্টি কপি করতে পারে।নেস্টেড প্রপার্টি অ্যাক্সেস করতে পারে।
ব্যবহারসাধারণত এক অবজেক্ট থেকে অন্য অবজেক্টে ডেটা কপি করার জন্য ব্যবহৃত হয়।প্রপার্টি অ্যাক্সেস এবং পরিবর্তন করার জন্য ব্যবহৃত হয়।

সারাংশ

  • BeanUtils এবং PropertyUtils উভয়ই Apache Commons BeanUtils লাইব্রেরির অংশ, তবে তাদের ব্যবহারের উদ্দেশ্য আলাদা।
  • BeanUtils সাধারণত ডেটা কপি এবং টাইপ কনভার্সনের জন্য ব্যবহৃত হয়, যেখানে PropertyUtils মূলত প্রপার্টি অ্যাক্সেস এবং নেস্টেড প্রপার্টি হ্যান্ডলিংয়ের জন্য ব্যবহৃত হয়।
  • আপনি যখন এক অবজেক্ট থেকে অন্য অবজেক্টে প্রপার্টি কপি করতে চান, তখন BeanUtils ব্যবহার করবেন এবং যখন প্রপার্টি অ্যাক্সেস বা পরিবর্তন করতে চান, তখন PropertyUtils ব্যবহার করবেন।
Content added || updated By
Promotion

Are you sure to start over?

Loading...