Bean এর মধ্যে Nested Properties এর কপি

Copying Properties (প্রপার্টি কপি করা) - জাভা বীনইউটিলস (Java BeanUtils) - Computer Programming

334

Nested Properties হল এমন প্রপার্টি যা একটি Java Bean-এর মধ্যে অন্য Java Bean থাকে। সাধারণত, এই ধরনের প্রপার্টি কপি করা বেশ কঠিন হতে পারে, তবে Apache Commons BeanUtils বা PropertyUtils এর মাধ্যমে সহজেই nested properties কপি করা সম্ভব।

নেস্টেড প্রপার্টি কপি করার সময়, একটি Java Bean-এ থাকা কোনো অবজেক্টের (যেমন, Address বা ContactInfo) প্রপার্টি অন্য Java Bean-এর মধ্যে কপি করা হয়। চলুন দেখি কিভাবে BeanUtils এবং PropertyUtils ব্যবহার করে nested properties কপি করা যায়।


1. BeanUtils ব্যবহার করে Nested Properties কপি করা

BeanUtils ব্যবহার করে আপনি সহজেই একটি Java Bean-এর মধ্যে nested properties কপি করতে পারেন। এটি nested property names ধারণ করে, যা একাধিক স্তরের অবজেক্টের প্রপার্টি অ্যাক্সেস এবং কপি করতে সহায়তা করে।

উদাহরণ: BeanUtils দিয়ে Nested Property কপি করা

import org.apache.commons.beanutils.BeanUtils;

public class NestedPropertyExample {
    public static void main(String[] args) {
        try {
            // Create Address object
            Address address1 = new Address("Street 123", "City A");

            // Create Person object with nested Address object
            Person person1 = new Person("John", 30, address1);

            // Target Person object
            Person person2 = new Person();

            // Copy properties including nested Address
            BeanUtils.copyProperties(person2, person1);

            // Output copied properties including nested Address
            System.out.println("Name: " + person2.getName());         // Output: John
            System.out.println("Age: " + person2.getAge());           // Output: 30
            System.out.println("Street: " + person2.getAddress().getStreet()); // Output: Street 123
            System.out.println("City: " + person2.getAddress().getCity());     // Output: City A
        } 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;
    }

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

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

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

ব্যাখ্যা:

  1. BeanUtils.copyProperties() মেথডটি person1 থেকে person2-এ সমস্ত প্রপার্টি কপি করেছে, যার মধ্যে Address নামক একটি নেস্টেড প্রপার্টি আছে।
  2. এখানে address.street এবং address.city প্রপার্টিগুলো person1 থেকে person2 তে কপি করা হয়েছে।

BeanUtils স্বয়ংক্রিয়ভাবে নেস্টেড প্রপার্টি কপি করতে সক্ষম, যতক্ষণ না প্রপার্টির নাম সঠিকভাবে দেওয়া হয়।


2. PropertyUtils ব্যবহার করে Nested Properties কপি করা

PropertyUtils একটি JavaBean-এর মধ্যে nested properties অ্যাক্সেস এবং ম্যানিপুলেট করতে ব্যবহৃত হয়। এটি getter/setter মেথডের মাধ্যমে কাজ করে এবং nested properties এক্সেস করতে সহজ হয়।

উদাহরণ: PropertyUtils দিয়ে Nested Property কপি করা

import org.apache.commons.beanutils.PropertyUtils;

public class PropertyUtilsNestedExample {
    public static void main(String[] args) {
        try {
            // Create Address object
            Address address1 = new Address("Street 123", "City A");

            // Create Person object with nested Address object
            Person person1 = new Person("John", 30, address1);

            // Target Person object
            Person person2 = new Person();

            // Copy properties using PropertyUtils (Nested property copying)
            PropertyUtils.copyProperties(person2, person1);

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

ব্যাখ্যা:

  1. PropertyUtils.copyProperties() মেথড ব্যবহার করে person1 থেকে person2 তে প্রপার্টি কপি করা হয়েছে, যার মধ্যে Address নামক নেস্টেড প্রপার্টি রয়েছে।
  2. এখানে address.street এবং address.city কপি করা হয়েছে।

এটি BeanUtils এর মতো nested properties কপি করার জন্য উপযুক্ত, তবে এটি সাধারণভাবে শুধুমাত্র getter/setter মেথডের মাধ্যমে কাজ করে।


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

বৈশিষ্ট্যBeanUtilsPropertyUtils
নেস্টেড প্রপার্টি কপিস্বয়ংক্রিয়ভাবে কপি করে, সহজ এবং দ্রুতgetter/setter মেথড ব্যবহার করে কপি করে
ব্যবহারডেটা কপি ও টাইপ কনভার্সনের জন্য ব্যবহৃতপ্রপার্টি এক্সেস এবং nested properties কপি করার জন্য ব্যবহৃত
টাইপ কনভার্সনসাপোর্ট করেসাপোর্ট করে না
কপি করার সুবিধাপ্রপার্টি কপি দ্রুত এবং সহজবেশি কাস্টমাইজেশন এবং কোড কন্ট্রোল প্রদান করে

সারাংশ

  • BeanUtils এবং PropertyUtils দুটি লাইব্রেরি Java Beans এবং অন্যান্য objects-এর মধ্যে ডেটা কপি এবং ম্যানিপুলেশন করার জন্য ব্যবহৃত হয়।
  • BeanUtils স্বয়ংক্রিয়ভাবে nested properties কপি করতে পারে এবং টাইপ কনভার্সন সাপোর্ট করে।
  • PropertyUtils সাধারণত getter/setter মেথড ব্যবহার করে nested properties অ্যাক্সেস এবং কপি করার জন্য ব্যবহৃত হয়।
  • উভয় লাইব্রেরি নির্দিষ্ট পরিস্থিতিতে উপযোগী, তবে BeanUtils সহজ এবং দ্রুত ডেটা কপি করতে সহায়ক। PropertyUtils এ বেশি কাস্টমাইজেশন এবং নিয়ন্ত্রণ পাওয়া যায়।

BeanUtils এবং PropertyUtils উভয়ই powerful tools, যা Java Beans-এর মধ্যে nested properties কপি এবং ম্যানিপুলেশন সহজ করে তোলে।

Content added || updated By
Promotion

Are you sure to start over?

Loading...