BeanUtils এর মাধ্যমে Multiple Bean Operations

Advanced BeanUtils Techniques (অ্যাডভান্সড বিনইউটিলস টেকনিকস) - জাভা বীনইউটিলস (Java BeanUtils) - Computer Programming

342

Apache Commons BeanUtils একটি শক্তিশালী লাইব্রেরি যা Java Beans-এর মধ্যে ডেটা কপি এবং টাইপ কনভার্সন সহজ করে তোলে। Multiple Bean Operations হল একাধিক Java Beans এর মধ্যে ডেটা কপি বা ম্যানিপুলেশন করার প্রক্রিয়া, যেমন একাধিক Beans থেকে একটি Bean এ ডেটা কপি করা বা একাধিক Beans-এর মধ্যে ডেটা ট্রান্সফার করা।

BeanUtils এর সাহায্যে আপনি একাধিক Beans এর মধ্যে properties কপি করতে পারেন এবং বিভিন্ন ধরনের object mapping বা batch operations সম্পাদন করতে পারেন। চলুন, দেখি কিভাবে BeanUtils দিয়ে একাধিক Bean এর উপর অপারেশন করা যায়।


১. Multiple Beans Data Copying

একাধিক Beans এর মধ্যে ডেটা কপি করার জন্য BeanUtils.copyProperties() ব্যবহার করা যায়। এই মেথড একটি Bean থেকে অন্য Bean এ প্রপার্টি কপি করে।

উদাহরণ: Multiple Beans Data Copying

ধরা যাক, আপনার কাছে তিনটি Person Beans রয়েছে এবং আপনাকে তাদের মধ্যে ডেটা কপি করতে হবে।

import org.apache.commons.beanutils.BeanUtils;

public class MultipleBeanOperationsExample {
    public static void main(String[] args) {
        try {
            // Create source Person objects
            Person person1 = new Person("Alice", 28);
            Person person2 = new Person("Bob", 32);
            Person person3 = new Person("Charlie", 25);

            // Create target Person object
            Person targetPerson = new Person();

            // Copy properties from multiple source Person beans to target Person
            BeanUtils.copyProperties(targetPerson, person1);  // Copy from person1
            BeanUtils.copyProperties(targetPerson, person2);  // Copy from person2
            BeanUtils.copyProperties(targetPerson, person3);  // Copy from person3

            // Output the copied properties
            System.out.println("Target Person Name: " + targetPerson.getName());
            System.out.println("Target Person Age: " + targetPerson.getAge());

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

class Person {
    private String name;
    private int age;

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

ব্যাখ্যা:

  • BeanUtils.copyProperties() ব্যবহার করে, তিনটি Person Beans থেকে ডেটা একটি টার্গেট Person Bean এ কপি করা হচ্ছে।
  • একাধিক Bean থেকে প্রপার্টি কপি করার জন্য, আপনি প্রথমে একটির প্রপার্টি কপি করবেন এবং তারপর পরবর্তী Bean থেকে প্রপার্টি কপি করবেন।
  • BeanUtils এর মাধ্যমে শেষ প্রপার্টি কপি করা হলে, আগের প্রপার্টিগুলি overwrite হতে পারে, তাই যদি একই প্রপার্টি (যেমন name বা age) এর মান আলাদা হয়, এটি পরবর্তী Bean থেকে কপি হবে।

২. Batch Operations on Multiple Beans

ধরা যাক, আপনার কাছে একটি List বা Array রয়েছে যেখান থেকে একাধিক Bean-এ ডেটা কপি করতে হবে। আপনি BeanUtils ব্যবহার করে একসাথে একাধিক Bean অপারেশন করতে পারেন।

উদাহরণ: Batch Operations (List of Beans)

import org.apache.commons.beanutils.BeanUtils;

import java.util.ArrayList;
import java.util.List;

public class BatchBeanOperationsExample {
    public static void main(String[] args) {
        try {
            // Create a list of source Person objects
            List<Person> personList = new ArrayList<>();
            personList.add(new Person("Alice", 28));
            personList.add(new Person("Bob", 32));
            personList.add(new Person("Charlie", 25));

            // Create a list to store target Person objects
            List<Person> targetList = new ArrayList<>();

            // Iterate over personList and copy properties to targetList
            for (Person person : personList) {
                Person targetPerson = new Person();
                BeanUtils.copyProperties(targetPerson, person);  // Copy properties from source to target
                targetList.add(targetPerson);
            }

            // Output the copied properties for each targetPerson
            for (Person target : targetList) {
                System.out.println("Target Person Name: " + target.getName());
                System.out.println("Target Person Age: " + target.getAge());
            }

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

ব্যাখ্যা:

  • এখানে একটি List তৈরি করা হয়েছে যেখানে অনেক Person Beans রয়েছে।
  • একটি নতুন List তৈরি করা হয়েছে যেখানে targetPerson Beans এর ডেটা কপি করা হবে।
  • একটি লুপ ব্যবহার করে BeanUtils.copyProperties() মেথডের মাধ্যমে প্রতিটি Bean থেকে ডেটা কপি করা হচ্ছে।

এটি batch operations এর একটি সাধারণ উদাহরণ যেখানে একাধিক Beans এর ডেটা একসাথে কপি করা হচ্ছে।


৩. Combining Multiple Beans in a Single Object

ধরা যাক, আপনাকে একাধিক Beans এর ডেটা একটি সিঙ্গল Bean-এ মিশ্রিত করতে হবে। এখানে BeanUtils এর সাহায্যে একাধিক Beans থেকে ডেটা কপি করা হবে এবং একটি নতুন CombinedPerson Bean তৈরি করা হবে।

উদাহরণ: Combine Multiple Beans into One

import org.apache.commons.beanutils.BeanUtils;

public class CombineMultipleBeansExample {
    public static void main(String[] args) {
        try {
            // Create two Person objects
            Person person1 = new Person("Alice", 28);
            Person person2 = new Person("Bob", 32);

            // Create a CombinedPerson object to combine the data
            CombinedPerson combinedPerson = new CombinedPerson();

            // Copy properties from person1 to combinedPerson
            BeanUtils.copyProperties(combinedPerson, person1);
            // Combine properties from person2 to combinedPerson
            BeanUtils.copyProperties(combinedPerson, person2);

            // Output the combined data
            System.out.println("Combined Person Name: " + combinedPerson.getName());  // Output: Bob (overwritten by person2)
            System.out.println("Combined Person Age: " + combinedPerson.getAge());    // Output: 32 (overwritten by person2)

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

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

ব্যাখ্যা:

  • BeanUtils.copyProperties() এর মাধ্যমে person1 এবং person2 থেকে CombinedPerson এ ডেটা কপি করা হচ্ছে।
  • যেহেতু name এবং age প্রপার্টি person2 তে কপি হচ্ছে, তাই এটি person1 এর মানকে overwrite করবে।
  • এটি multiple Bean combination এর একটি উদাহরণ, যেখানে দুটি Bean থেকে একটি একক Bean এ ডেটা মিশ্রিত হচ্ছে।

৪. Multiple Beans with Different Types (Type Conversion)

যখন আপনার একাধিক Beans থাকে এবং তাদের মধ্যে বিভিন্ন টাইপের ডেটা কপি করতে হয়, তখন BeanUtilstype conversion প্রয়োজন হতে পারে। আপনি BeanUtilsBean বা BeanUtils এর মাধ্যমে টাইপ কনভার্সন করতে পারেন।

উদাহরণ: Multiple Beans with Type Conversion

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

public class MultipleBeansWithTypeConversion {
    public static void main(String[] args) {
        try {
            // Create a map of string data
            Map<String, String> data = Map.of(
                "name", "John",
                "age", "30"  // String data needs to be converted to Integer
            );

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

            // Copy properties from map to Person bean with type conversion
            BeanUtils.populate(person, data);

            // Output the converted properties
            System.out.println("Name: " + person.getName());  // Output: John
            System.out.println("Age: " + person.getAge());    // Output: 30 (String to Integer conversion)

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

ব্যাখ্যা:

  • এখানে Map থেকে Person Bean তে ডেটা কপি করা হচ্ছে। যেহেতু age একটি String হিসেবে আছে, তাই BeanUtils এটি Integer তে কনভার্ট করে কপি করবে।

সারাংশ

  • Multiple Bean Operations হল একাধিক Java Bean এর মধ্যে ডেটা কপি বা ম্যানিপুলেশন করার প্রক্রিয়া।
  • BeanUtils.copyProperties()

মেথড ব্যবহার করে একাধিক Beans থেকে একটি Bean-এ ডেটা কপি করা যেতে পারে।

  • Batch Processing এর মাধ্যমে একসাথে অনেক Bean এর মধ্যে ডেটা কপি করা সহজ হয়।
  • Combining Multiple Beans এর মাধ্যমে একাধিক Bean থেকে ডেটা একটি সিঙ্গল Bean-এ সংযুক্ত করা যায়।
  • Type Conversion এর মাধ্যমে BeanUtils ব্যবহার করে ডেটার টাইপ কনভার্সন করা যায়, যেমন String থেকে Integer কনভার্ট করা।

এই টেকনিকগুলি Java Bean এবং DTO ম্যানিপুলেশন, form data binding, এবং database object mapping এর মতো ক্ষেত্রে অত্যন্ত উপকারী।

Content added || updated By
Promotion

Are you sure to start over?

Loading...