উদাহরণ সহ Update Method ব্যবহার

Update Method এবং Partial Mapping - ম্যাপস্ট্রাক্ট (MapStruct) - Java Technologies

278

MapStruct একটি Java annotation processor টুল যা ডোমেইন অবজেক্টের মধ্যে ডেটা ম্যাপিং সোজা এবং কার্যকরভাবে করতে সাহায্য করে। এটি compile-time এ কোড জেনারেট করে, যা পারফরম্যান্সে উন্নতি আনে এবং রানটাইমে অতিরিক্ত লোড কমায়। Update Method হল একটি বিশেষ ফিচার যা MapStruct এর মাধ্যমে আমরা ব্যবহার করতে পারি যখন আমাদের একটি অবজেক্টের কিছু নির্দিষ্ট ক্ষেত্র আপডেট করতে হয়, এবং পুরো অবজেক্টকে আবার নতুন করে ম্যাপ করতে না হয়।

এখানে, আমরা Update Method এর ব্যবহার দেখব, যা একটি ডোমেইন অবজেক্টের মধ্যে কিছু নির্দিষ্ট ফিল্ড আপডেট করতে ব্যবহৃত হয়, যেমন যখন একটি পার্সিস্টেড অবজেক্টের কিছু অংশ পরিবর্তন করতে চাই।


১. Update Method এর ধারণা

Update Method ব্যবহার করার মাধ্যমে আপনি একটি অবজেক্টের কিছু নির্দিষ্ট ফিল্ড আপডেট করতে পারেন, বাকি ফিল্ডগুলির মান অপরিবর্তিত থাকে। এটি তখন খুবই উপকারী যখন আপনার একটি অবজেক্টে কিছু নতুন ডেটা আপডেট করতে চান, তবে পূর্ণ ম্যাপিং করার দরকার নেই।

এটি মূলত @MappingTarget অ্যানোটেশন ব্যবহার করে করা হয়, যা জানিয়ে দেয় যে আমরা একটি অবজেক্টের অ্যাড্রেসে আপডেট করতে যাচ্ছি, এবং কোথায় নতুন মানটি ম্যাপ করতে হবে।


২. Update Method ব্যবহার করার জন্য MapStruct কনফিগারেশন

আপনি যখন @MappingTarget ব্যবহার করবেন, তখন আপনার ম্যাপিং ইন্টারফেসে দুটি ইনপুট হবে—একটি উত্স অবজেক্ট এবং একটি লক্ষ্য (target) অবজেক্ট। এর মাধ্যমে MapStruct সেই লক্ষ্য অবজেক্টকে আপডেট করবে, এবং উত্স অবজেক্টের মান অনুযায়ী শুধুমাত্র প্রয়োজনীয় ফিল্ডগুলি পরিবর্তন করবে।

উদাহরণ:

ধরা যাক, আমাদের একটি Employee ডোমেইন ক্লাস আছে, এবং আমরা একটি EmployeeDTO থেকে Employee অবজেক্ট আপডেট করতে চাই।

Employee.java:

public class Employee {
    private String name;
    private String department;
    private int age;

    // Getters and Setters
}

EmployeeDTO.java:

public class EmployeeDTO {
    private String name;
    private String department;

    // Getters and Setters
}

এখন, আমাদের একটি EmployeeMapper ইন্টারফেস তৈরি করতে হবে, যা EmployeeDTO থেকে Employee অবজেক্ট আপডেট করবে।

EmployeeMapper.java:

import org.mapstruct.Mapper;
import org.mapstruct.Mapping;
import org.mapstruct.MappingTarget;

@Mapper
public interface EmployeeMapper {

    @Mapping(source = "name", target = "name")
    @Mapping(source = "department", target = "department")
    void updateEmployeeFromDTO(EmployeeDTO dto, @MappingTarget Employee employee);
}

এখানে, updateEmployeeFromDTO মেথডটি EmployeeDTO থেকে Employee অবজেক্টের ফিল্ডগুলো আপডেট করবে। @MappingTarget ব্যবহার করা হয়েছে লক্ষ্য অবজেক্ট (Employee) আপডেট করার জন্য।


৩. Update Method উদাহরণ

ধরা যাক, আপনি একটি Employee অবজেক্টের কিছু ফিল্ড আপডেট করতে চান। এর জন্য আমরা updateEmployeeFromDTO মেথড ব্যবহার করতে পারি, যা ডেটা আপডেট করবে।

Main.java:

public class Main {
    public static void main(String[] args) {
        Employee employee = new Employee();
        employee.setName("John");
        employee.setDepartment("Engineering");
        employee.setAge(30);

        // EmployeeDTO containing the new data to update
        EmployeeDTO employeeDTO = new EmployeeDTO();
        employeeDTO.setName("David");
        employeeDTO.setDepartment("HR");

        // Using MapStruct to update the employee object
        EmployeeMapper mapper = Mappers.getMapper(EmployeeMapper.class);
        mapper.updateEmployeeFromDTO(employeeDTO, employee);

        // Printing the updated Employee object
        System.out.println("Updated Employee: ");
        System.out.println("Name: " + employee.getName());  // Output: David
        System.out.println("Department: " + employee.getDepartment());  // Output: HR
        System.out.println("Age: " + employee.getAge());  // Output: 30 (unchanged)
    }
}

এখানে, employeeDTO থেকে name এবং department ফিল্ড আপডেট হবে, কিন্তু age ফিল্ড অপরিবর্তিত থাকবে, কারণ এটি EmployeeDTO তে নেই এবং MapStruct কেবলমাত্র name এবং department ফিল্ডগুলি আপডেট করবে।


৪. MapStruct Update Method এর সুবিধা

  • Partial Updates: এটি ব্যবহার করে আপনি এক বা একাধিক ফিল্ডের মান পরিবর্তন করতে পারেন, পুরো অবজেক্টের পরিবর্তন ছাড়াই।
  • No Full Object Mapping: আপনার পুরো অবজেক্ট আবার ম্যাপ করতে হবে না, যা পারফরম্যান্সে উপকারি।
  • Cleaner and More Efficient: এটি কোডকে বেশি কার্যকরী এবং পরিষ্কার করে তোলে, বিশেষত যখন আপনি একটি পার্সিস্টেড অবজেক্টে শুধু কিছু নির্দিষ্ট পরিবর্তন করতে চান।

৫. Update Method ব্যবহার করে কাস্টম লজিক প্রয়োগ

MapStruct এর Update Method এর মাধ্যমে আপনি কাস্টম লজিক প্রয়োগও করতে পারেন, যেমন কিছু নির্দিষ্ট শর্তের ভিত্তিতে আপডেট করা বা একটি ফিল্ডে কাস্টম কনভার্সন প্রয়োগ করা। এর জন্য আপনি @AfterMapping অ্যানোটেশন ব্যবহার করতে পারেন।

উদাহরণ: কাস্টম লজিক প্রয়োগ

import org.mapstruct.AfterMapping;
import org.mapstruct.Mapper;
import org.mapstruct.MappingTarget;

@Mapper
public interface EmployeeMapper {

    @Mapping(source = "name", target = "name")
    @Mapping(source = "department", target = "department")
    void updateEmployeeFromDTO(EmployeeDTO dto, @MappingTarget Employee employee);

    @AfterMapping
    default void setEmployeeAge(@MappingTarget Employee employee) {
        if (employee.getAge() == 0) {
            employee.setAge(30); // Default age if not provided
        }
    }
}

এখানে, @AfterMapping ব্যবহার করে আমরা Employee অবজেক্টের age ফিল্ডে ডিফল্ট মান 30 সেট করেছি যদি সেটি 0 হয়।


সারাংশ

MapStruct এর Update Method হল একটি শক্তিশালী টুল যা ডোমেইন অবজেক্টে শুধুমাত্র কিছু নির্দিষ্ট ফিল্ড আপডেট করতে সহায়তা করে, পুরো অবজেক্ট ম্যাপ করার প্রয়োজন পড়বে না। এটি পারফরম্যান্সের উন্নতি সাধন করে এবং কোড লেখার জটিলতা কমায়। @MappingTarget অ্যানোটেশন ব্যবহার করে আপনি লক্ষ্য অবজেক্টে আপডেট করতে পারেন এবং @AfterMapping দিয়ে কাস্টম লজিক প্রয়োগ করতে পারেন।


Content added By
Promotion

Are you sure to start over?

Loading...