Existing Object এ Partial Mapping করা গাইড ও নোট

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

MapStruct JavaBeans এবং DTO (Data Transfer Object) এর মধ্যে ম্যাপিং করার জন্য একটি জনপ্রিয় এবং দক্ষ ফ্রেমওয়ার্ক। Partial Mapping এমন একটি পরিস্থিতি যেখানে আপনি একটি অবজেক্টের অংশবিশেষ বা কিছু নির্দিষ্ট ফিল্ড অন্য একটি অবজেক্টে ম্যাপ করতে চান, কিন্তু পুরো অবজেক্টটি ম্যাপ করার প্রয়োজন নেই। এটি বিশেষত তখন ব্যবহৃত হয় যখন আপনি একটি অবজেক্টে কিছু তথ্য আপডেট বা পরিবর্তন করতে চান, তবে পুরো অবজেক্টটি পুনরায় ম্যাপ করার প্রয়োজন নেই।

১. Partial Mapping এর প্রয়োজনীয়তা

Partial Mapping প্রয়োজনীয় হতে পারে কয়েকটি কারণে:

  1. Performance Improvement: পুরো অবজেক্ট ম্যাপিংয়ের তুলনায় কিছু নির্দিষ্ট ফিল্ড ম্যাপিং করতে পারলে পারফরম্যান্স বৃদ্ধি পায়।
  2. Object Updates: যখন শুধুমাত্র একটি অবজেক্টের কিছু প্রপার্টি পরিবর্তন হয়, তখন পুরো অবজেক্ট ম্যাপ করার পরিবর্তে শুধুমাত্র সংশ্লিষ্ট প্রপার্টিগুলি আপডেট করা হয়।
  3. Memory Efficiency: বড় অবজেক্টের পরিবর্তে ছোট, প্রয়োজনীয় অংশগুলিকে ম্যাপ করে মেমরি ব্যবহারের দক্ষতা বৃদ্ধি করা যায়।

২. MapStruct এ Partial Mapping করার উদাহরণ

ধরা যাক আমাদের দুটি অবজেক্ট রয়েছে: Person এবং PersonDTOPersonDTO এ কিছু নির্দিষ্ট প্রপার্টি শুধুমাত্র আপডেট করতে চাই, কিন্তু পুরো অবজেক্ট নয়। এখানে Partial Mapping করতে হবে।

Person.java (Source Object)

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

    // Getters and Setters
}

PersonDTO.java (Target Object)

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

    // Getters and Setters
}

এখন, PersonDTO এর name এবং age ফিল্ডে Person এর মান ম্যাপ করতে চাই, কিন্তু পুরো Person অবজেক্টটি নয়। আমরা MapStruct ব্যবহার করে শুধুমাত্র প্রয়োজনীয় প্রপার্টিগুলি ম্যাপ করব।


৩. Partial Mapping for Existing Object

MapStruct এ existing objectpartial mapping করতে, আপনি @MappingTarget অ্যানোটেশন ব্যবহার করতে পারেন, যা ইঙ্গিত দেয় যে আপনি একটি ইতিমধ্যেই বিদ্যমান অবজেক্টে ম্যাপিং করছেন, নতুন অবজেক্ট তৈরির পরিবর্তে।

PersonMapper.java (Mapper Interface)

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

@Mapper
public interface PersonMapper {

    // Partial Mapping to update existing PersonDTO
    @Mapping(target = "name", source = "name")
    @Mapping(target = "age", source = "age")
    void updatePersonDTOFromPerson(Person person, @MappingTarget PersonDTO personDTO);
}

এখানে, @MappingTarget অ্যানোটেশনটি ব্যবহার করা হয়েছে যা নির্দেশ করে যে personDTO একটি বিদ্যমান অবজেক্ট, এবং আমরা তা আপডেট করব। শুধুমাত্র name এবং age ফিল্ড ম্যাপ করা হবে, বাকি ফিল্ডগুলি অপরিবর্তিত থাকবে।


৪. PersonService.java (Service Layer)

এখন, আপনি PersonServicePersonMapper ব্যবহার করে পারশিয়াল ম্যাপিং করতে পারেন:

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

@Service
public class PersonService {

    @Autowired
    private PersonMapper personMapper;

    public void updatePersonDTO(Person person, PersonDTO personDTO) {
        personMapper.updatePersonDTOFromPerson(person, personDTO);
    }
}

এখানে, updatePersonDTOFromPerson মেথডের মাধ্যমে শুধুমাত্র name এবং age ফিল্ড আপডেট করা হবে।


৫. Main.java (Main Application)

আপনার main অ্যাপ্লিকেশনে, আপনি Person এবং PersonDTO এর মধ্যে পারশিয়াল ম্যাপিং দেখতে পাবেন:

public class Main {
    public static void main(String[] args) {
        Person person = new Person();
        person.setName("John Doe");
        person.setAddress("123 Main St");
        person.setAge(30);

        PersonDTO personDTO = new PersonDTO();
        personDTO.setName("Old Name");
        personDTO.setAge(25);

        // Partial Mapping
        PersonService personService = new PersonService();
        personService.updatePersonDTO(person, personDTO);

        System.out.println("Updated Name: " + personDTO.getName());  // John Doe
        System.out.println("Updated Age: " + personDTO.getAge());    // 30
    }
}

এখানে, PersonDTO এর name এবং age আপডেট হবে, কিন্তু address প্রপার্টি অপরিবর্তিত থাকবে।


৬. Partial Mapping এর উপকারিতা

  1. Performance Improvement: যদি কোনো নির্দিষ্ট প্রপার্টি আপডেট করতে হয়, তবে পুরো অবজেক্ট ম্যাপ করার চেয়ে পারশিয়াল ম্যাপিং অনেক দ্রুত হয়।
  2. Memory Efficiency: পুরো অবজেক্টের পরিবর্তে কিছু নির্দিষ্ট প্রপার্টি ম্যাপ করার মাধ্যমে মেমরি ব্যবহারে দক্ষতা বৃদ্ধি করা যায়।
  3. Easy Updates: যখন কোনো ফিল্ডে পরিবর্তন হয়, তখন ঐ ফিল্ডটিই আপডেট করা হয়, যাতে আরও সঠিক এবং দ্রুত প্রক্রিয়া হয়।
  4. Code Maintainability: পরিবর্তন বা আপডেটের সময় আপনার কোড কমপ্লেক্স না হয়ে সোজা এবং পরিষ্কার থাকে।

সারাংশ

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


Content added By
Promotion

Are you sure to start over?

Loading...