populate() এবং setProperty() Method এর ব্যবহার

Populating Beans (বিন পপুলেশন) - জাভা বীনইউটিলস (Java BeanUtils) - Computer Programming

359

Apache Commons BeanUtils লাইব্রেরির দুটি গুরুত্বপূর্ণ মেথড হলো populate() এবং **setProperty()**। এই দুটি মেথড Java Bean-এর প্রপার্টি সেট করার জন্য ব্যবহৃত হয়। তবে তাদের কাজের ধরন এবং ব্যবহারের পদ্ধতি কিছুটা ভিন্ন। চলুন বিস্তারিতভাবে এই দুটি মেথডের ব্যবহার এবং তাদের পার্থক্য দেখি।


১. populate() মেথড

populate() মেথড একটি Map অবজেক্ট ব্যবহার করে একটি Java Bean-এর প্রপার্টি সেট করে। Map-এর key প্রপার্টির নাম এবং value সেই প্রপার্টির মান নির্ধারণ করে।

উদাহরণ:

import org.apache.commons.beanutils.BeanUtils;

import java.util.HashMap;
import java.util.Map;

public class PopulateExample {
    public static void main(String[] args) {
        try {
            // Create a Person object
            Person person = new Person();

            // Create a map with property values
            Map<String, String> propertyMap = new HashMap<>();
            propertyMap.put("name", "John");
            propertyMap.put("age", "30");

            // Populate the properties of the Person object
            BeanUtils.populate(person, propertyMap);

            // Output the populated properties
            System.out.println("Name: " + person.getName());  // Output: John
            System.out.println("Age: " + person.getAge());    // Output: 30
        } catch (Exception e) {
            e.printStackTrace();
        }
    }
}

class Person {
    private String name;
    private int age;

    // Getters and Setters
    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. populate() মেথড Map-এর key-value ব্যবহার করে Person অবজেক্টের name এবং age প্রপার্টি সেট করেছে।
  2. Map-এর key (e.g., name, age) Java Bean এর প্রপার্টির নামের সাথে মিলে যায়।
  3. টাইপ কনভার্সন স্বয়ংক্রিয়ভাবে হয়েছে, যেমন Map-এ age একটি String, কিন্তু এটি Integer-এ কনভার্ট করা হয়েছে।

২. setProperty() মেথড

setProperty() মেথড একটি নির্দিষ্ট প্রপার্টির মান সেট করতে ব্যবহৃত হয়। এটি সরাসরি একটি প্রপার্টির নাম এবং মান গ্রহণ করে এবং সেই প্রপার্টির মান আপডেট করে।

উদাহরণ:

import org.apache.commons.beanutils.BeanUtils;

public class SetPropertyExample {
    public static void main(String[] args) {
        try {
            // Create a Person object
            Person person = new Person();

            // Set properties individually
            BeanUtils.setProperty(person, "name", "Alice");
            BeanUtils.setProperty(person, "age", "25");

            // Output the set properties
            System.out.println("Name: " + person.getName());  // Output: Alice
            System.out.println("Age: " + person.getAge());    // Output: 25
        } catch (Exception e) {
            e.printStackTrace();
        }
    }
}

class Person {
    private String name;
    private int age;

    // Getters and Setters
    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. setProperty() সরাসরি একটি নির্দিষ্ট প্রপার্টির নাম এবং মান নেয় এবং সেই মান সেট করে।
  2. এখানে name এবং age প্রপার্টির জন্য পৃথকভাবে মান সেট করা হয়েছে।
  3. টাইপ কনভার্সন স্বয়ংক্রিয়ভাবে হয়েছে, যেমন age একটি String থেকে Integer-এ কনভার্ট হয়েছে।

populate() এবং setProperty() এর মধ্যে পার্থক্য

বৈশিষ্ট্যpopulate()setProperty()
কাজের ধরনএকটি Map ব্যবহার করে একাধিক প্রপার্টি সেট করে।একটি নির্দিষ্ট প্রপার্টি সেট করে।
ইনপুটMap অবজেক্ট (key-value পেয়ার)।প্রপার্টির নাম এবং মান সরাসরি ইনপুট নেয়।
একাধিক প্রপার্টি সেট করাএকসাথে একাধিক প্রপার্টি সেট করতে সক্ষম।একবারে শুধুমাত্র একটি প্রপার্টি সেট করা যায়।
টাইপ কনভার্সনস্বয়ংক্রিয়ভাবে টাইপ কনভার্সন করে।স্বয়ংক্রিয়ভাবে টাইপ কনভার্সন করে।
ব্যবহারযখন একাধিক প্রপার্টি সেট করতে হয়।যখন নির্দিষ্ট কোনো প্রপার্টি সেট করতে হয়।

Complex Bean এ populate() এবং setProperty() ব্যবহার

উদাহরণ: Nested Properties

import org.apache.commons.beanutils.BeanUtils;

import java.util.HashMap;
import java.util.Map;

public class NestedPropertiesExample {
    public static void main(String[] args) {
        try {
            // Create a Person object with nested Address
            Person person = new Person();
            person.setAddress(new Address());

            // Using populate() to set nested properties
            Map<String, String> propertyMap = new HashMap<>();
            propertyMap.put("name", "John");
            propertyMap.put("age", "30");
            propertyMap.put("address.street", "Main Street");
            propertyMap.put("address.city", "City A");

            BeanUtils.populate(person, propertyMap);

            // Output nested properties
            System.out.println("Name: " + person.getName());                  // Output: John
            System.out.println("Age: " + person.getAge());                    // Output: 30
            System.out.println("Street: " + person.getAddress().getStreet()); // Output: Main Street
            System.out.println("City: " + person.getAddress().getCity());     // Output: City A
        } catch (Exception e) {
            e.printStackTrace();
        }
    }
}

class Person {
    private String name;
    private int age;
    private Address address;

    // Getters and Setters
    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;

    // Getters and Setters
    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. Nested Properties: Map-এ address.street এবং address.city এর মাধ্যমে nested properties সেট করা হয়েছে।
  2. populate(): Map ব্যবহার করে সমস্ত প্রপার্টি একবারে সেট করা হয়েছে।
  3. setProperty(): আলাদাভাবে setProperty() ব্যবহার করেও একই কাজ করা যেত।

সারাংশ

  • populate() একটি Map ব্যবহার করে একাধিক প্রপার্টি একবারে সেট করতে পারদর্শী। এটি বিশেষভাবে উপযোগী যখন অনেক প্রপার্টি আপডেট করতে হয়।
  • setProperty() একটি নির্দিষ্ট প্রপার্টি সেট করতে কার্যকর। এটি সরাসরি প্রপার্টির নাম এবং মান ইনপুট নিয়ে কাজ করে।
  • Nested Properties পরিচালনায় উভয় মেথড কার্যকর, তবে populate() জটিল nested প্রপার্টি হ্যান্ডলিংয়ে বেশি সুবিধাজনক।
Content added || updated By
Promotion

Are you sure to start over?

Loading...