Map থেকে Bean এ ডেটা সেট করা

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

358

Java-তে Map থেকে Java Bean-এ ডেটা সেট করার জন্য আপনি Apache Commons BeanUtils লাইব্রেরি ব্যবহার করতে পারেন। BeanUtils-এ একটি মেথড রয়েছে, যেটি Map-এর কীগুলোর মাধ্যমে Java Bean-এর প্রপার্টিতে ডেটা সেট করে। এটি বিশেষভাবে ব্যবহৃত হয় যখন ডেটা একটি Map-এ থাকে এবং সেই ডেটাকে Java Bean-এ ইনজেক্ট করতে হয়।

উদাহরণ: Map থেকে Bean এ ডেটা সেট করা

ধরা যাক, আপনার কাছে একটি Map<String, Object> রয়েছে এবং আপনি সেই Map থেকে ডেটা Java Bean-এর প্রপার্টিতে সেট করতে চান।

১. Java Bean তৈরি করা

প্রথমে, একটি সাধারণ Java Bean তৈরি করি, যেখানে কিছু প্রপার্টি থাকবে।

public class Person {
    private String name;
    private int age;

    // Constructor
    public Person() {}

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

এখানে Person ক্লাসের দুটি প্রপার্টি name এবং age রয়েছে, যার জন্য গেটার এবং সেটার মেথড দেওয়া হয়েছে।

২. Map থেকে Bean-এ ডেটা সেট করা

এখন Map থেকে Person Bean-এ ডেটা সেট করার উদাহরণ দেখি। আমরা Apache Commons BeanUtils এর populate মেথড ব্যবহার করব, যা একটি Map থেকে Bean-এর প্রপার্টিতে ডেটা সেট করতে পারে।

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

public class MapToBeanExample {
    public static void main(String[] args) {
        try {
            // Create a Map with data
            Map<String, Object> personMap = new HashMap<>();
            personMap.put("name", "John");
            personMap.put("age", 30);

            // Create a Person object (target bean)
            Person person = new Person();

            // Use BeanUtils to populate the Person object from the Map
            BeanUtils.populate(person, personMap);

            // Output the properties of the populated Person object
            System.out.println("Name: " + person.getName()); // Output: John
            System.out.println("Age: " + person.getAge());   // Output: 30

        } catch (Exception e) {
            e.printStackTrace();
        }
    }
}

ব্যাখ্যা:

  1. Map<String, Object> personMap: এখানে একটি Map তৈরি করা হয়েছে, যেখানে name এবং age এর মান দেয়া হয়েছে।
  2. BeanUtils.populate(): এই মেথডটি personMap থেকে person নামক Person Bean-এর প্রপার্টিতে ডেটা সেট করবে। এই মেথডটি Map এর কীগুলিকে Bean-এর গেটার/সেটার মেথডের মাধ্যমে ম্যাপ করবে।
  3. person.getName() এবং person.getAge() ব্যবহার করে Map থেকে Bean-এর প্রপার্টিতে সঠিক ডেটা সেট হওয়া নিশ্চিত করা হয়েছে।

৩. Map থেকে Bean-এ Nested Properties সেট করা

এছাড়া, nested properties সাপোর্ট করার জন্য, আপনি dot notation ব্যবহার করতে পারেন। উদাহরণস্বরূপ, যদি Person ক্লাসে একটি Address ক্লাস থাকে, তাহলে আপনি Map থেকে nested properties সেট করতে পারেন।

উদাহরণ: Nested Properties সেট করা

public class Person {
    private String name;
    private int age;
    private 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;
    }
}

public class Address {
    private String street;
    private String 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;
    }
}

এখন, যদি আপনি Address নামক nested class ব্যবহার করেন, তাহলে Map থেকে Person Bean-এ nested properties সেট করা যাবে।

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

public class MapToBeanWithNestedExample {
    public static void main(String[] args) {
        try {
            // Create a Map with nested properties
            Map<String, Object> personMap = new HashMap<>();
            personMap.put("name", "John");
            personMap.put("age", 30);
            personMap.put("address.street", "Street 123");
            personMap.put("address.city", "City A");

            // Create a Person object (target bean)
            Person person = new Person();

            // Use BeanUtils to populate the Person object from the Map
            BeanUtils.populate(person, personMap);

            // Output the properties of the populated Person object
            System.out.println("Name: " + person.getName());         // Output: John
            System.out.println("Age: " + person.getAge());           // Output: 30
            System.out.println("Street: " + person.getAddress().getStreet()); // Output: Street 123
            System.out.println("City: " + person.getAddress().getCity());     // Output: City A

        } catch (Exception e) {
            e.printStackTrace();
        }
    }
}

ব্যাখ্যা:

  1. Map<String, Object> personMap: এখানে Map-এ nested properties যেমন address.street এবং address.city যোগ করা হয়েছে।
  2. BeanUtils.populate(): address.street এবং address.city যথাক্রমে Address Bean-এর street এবং city প্রপার্টিতে সেট করা হয়েছে।
  3. Dot notation ব্যবহার করে nested properties কপি করা হয়েছে।

সারাংশ

  • Map থেকে Bean-এ ডেটা সেট করা খুবই কার্যকর এবং সহজ পদ্ধতি যা ডেটা ট্রান্সফার এবং ম্যাপিংয়ের জন্য ব্যবহৃত হয়।
  • Apache Commons BeanUtils এর populate() মেথড ব্যবহার করে Map থেকে Java Bean-এ ডেটা সহজে সেট করা যায়।
  • Dot notation ব্যবহার করে nested properties সহজে সেট করা সম্ভব।
  • BeanUtils.populate() মেথডটি getter/setter মেথডের মাধ্যমে প্রপার্টি অ্যাক্সেস করে Map থেকে ডেটা Bean-এ সেট করে।

এই পদ্ধতি সাধারণত API integration, data transfer এবং configuration mapping এর জন্য ব্যবহৃত হয়।

Content added || updated By
Promotion

Are you sure to start over?

Loading...