@Mapping এর nullValueMappingStrategy অ্যাট্রিবিউট ব্যবহার

Mapping Null Values এবং Null Value Handling - ম্যাপস্ট্রাক্ট (MapStruct) - Java Technologies

242

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

এই অ্যাট্রিবিউটটি ব্যবহার করার মাধ্যমে আপনি নির্দিষ্ট করতে পারবেন যে, যখন সোর্স অবজেক্টের কোন ফিল্ড null থাকে, তখন সেই ফিল্ডের মান টার্গেট অবজেক্টে কী হবে। আপনি এটিকে বিভিন্ন স্ট্র্যাটেজি অনুসারে কনফিগার করতে পারেন।


১. nullValueMappingStrategy অ্যাট্রিবিউট এর মূল উদ্দেশ্য

nullValueMappingStrategy অ্যাট্রিবিউট মূলত দুটি ফিল্ডের মধ্যে null মান ম্যানেজ করার জন্য ব্যবহৃত হয়। এই অ্যাট্রিবিউটটি @Mapping অ্যানোটেশনে যোগ করা হয় এবং এটি নির্ধারণ করে যে null মান কি হ্যান্ডেল করা হবে:

  1. SET_TO_NULL: যদি সোর্স ফিল্ড null হয়, তবে টার্গেট ফিল্ডে null সেট করা হবে।
  2. IGNORE: যদি সোর্স ফিল্ড null হয়, তবে টার্গেট ফিল্ডের কোন পরিবর্তন হবে না।
  3. SET_DEFAULT: যদি সোর্স ফিল্ড null হয়, তবে ডিফল্ট মান (যেমন, 0, "" ইত্যাদি) সেট হবে।

২. @Mapping এর nullValueMappingStrategy অ্যাট্রিবিউট ব্যবহার করার উদাহরণ

এখন, আমরা nullValueMappingStrategy অ্যাট্রিবিউট ব্যবহার করার কিছু উদাহরণ দেখবো।

উদাহরণ ১: SET_TO_NULL স্ট্র্যাটেজি

ধরা যাক, আমাদের দুটি ক্লাস Person এবং PersonDTO আছে, এবং আমরা চাই যে, যদি Person ক্লাসের address ফিল্ড null হয়, তবে PersonDTO তে null সেট করা হোক।

Person.java:

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

    // Getters and Setters
}

PersonDTO.java:

public class PersonDTO {
    private String name;
    private String address;

    // Getters and Setters
}

PersonMapper.java:

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

@Mapper
public interface PersonMapper {
    
    @Mapping(source = "address", target = "address", nullValueMappingStrategy = NullValueMappingStrategy.SET_TO_NULL)
    PersonDTO personToPersonDTO(Person person);
}

এখানে, যদি address ফিল্ড null থাকে, তবে PersonDTO এর address ফিল্ডে null সেট করা হবে।

উদাহরণ ২: IGNORE স্ট্র্যাটেজি

ধরা যাক, আমরা চাই যে, যদি Person ক্লাসের address ফিল্ড null হয়, তবে PersonDTO তে কোনো পরিবর্তন না ঘটে।

PersonMapper.java:

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

@Mapper
public interface PersonMapper {
    
    @Mapping(source = "address", target = "address", nullValueMappingStrategy = NullValueMappingStrategy.IGNORE)
    PersonDTO personToPersonDTO(Person person);
}

এখানে, address ফিল্ডের মান যদি null হয়, তাহলে PersonDTO এর address ফিল্ডে কোন পরিবর্তন হবে না এবং আগের মান থেকে যাবে।

উদাহরণ ৩: SET_DEFAULT স্ট্র্যাটেজি

ধরা যাক, আপনি চাইছেন যে, যদি সোর্স অবজেক্টের কোন ফিল্ড null হয়, তাহলে টার্গেট অবজেক্টের ওই ফিল্ডে ডিফল্ট মান (যেমন, খালি স্ট্রিং বা 0) সেট করা হবে।

PersonMapper.java:

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

@Mapper
public interface PersonMapper {
    
    @Mapping(source = "address", target = "address", nullValueMappingStrategy = NullValueMappingStrategy.SET_DEFAULT)
    PersonDTO personToPersonDTO(Person person);
}

এখানে, যদি address ফিল্ড null হয়, তাহলে এটি টার্গেট অবজেক্টে ডিফল্ট মান (যেমন, "Default Address") সেট করবে।


৩. MapStruct এর nullValueMappingStrategy এর প্রয়োগ

এখন, প্রতিটি স্ট্র্যাটেজি এবং তার প্রয়োগ দেখে নিন:

  1. SET_TO_NULL: সোর্সের null মান টার্গেটের null মানে পরিণত হয়।
  2. IGNORE: সোর্সের null মান টার্গেট ফিল্ডে কোনো পরিবর্তন ঘটায় না।
  3. SET_DEFAULT: সোর্সের null মানে টার্গেট ফিল্ডে একটি ডিফল্ট মান সেট হয়।

এই স্ট্র্যাটেজিগুলি ব্যবহারের মাধ্যমে আপনি ডেটা ট্রান্সফার বা ম্যাপিংয়ে নির্দিষ্ট আচরণ নিয়ন্ত্রণ করতে পারেন এবং null মানের ক্ষেত্রে যথাযথ ফলাফল অর্জন করতে পারেন।


৪. nullValueMappingStrategy কিভাবে নির্বাচিত করবেন?

  • যদি আপনি চান যে সোর্স ফিল্ড null হলে টার্গেট ফিল্ডে null সেট করা হোক, তবে SET_TO_NULL ব্যবহার করুন।
  • যদি আপনি চান যে সোর্স ফিল্ড null হলে টার্গেট ফিল্ডে কোনো পরিবর্তন না ঘটে, তবে IGNORE ব্যবহার করুন।
  • যদি আপনি চান যে সোর্স ফিল্ড null হলে টার্গেট ফিল্ডে একটি ডিফল্ট মান সেট করা হোক, তবে SET_DEFAULT ব্যবহার করুন।

এভাবে, nullValueMappingStrategy এর মাধ্যমে null মানের হ্যান্ডলিং এবং ম্যাপিং কার্যক্রম কাস্টমাইজ করা সম্ভব।


সারাংশ

@Mapping এর nullValueMappingStrategy অ্যাট্রিবিউট MapStruct এর একটি শক্তিশালী ফিচার যা null মানের হ্যান্ডলিং নিয়ন্ত্রণ করতে সাহায্য করে। SET_TO_NULL, IGNORE, এবং SET_DEFAULT স্ট্র্যাটেজির মাধ্যমে আপনি নির্দিষ্ট করতে পারেন যে সোর্স অবজেক্টের null ফিল্ডের মান টার্গেট অবজেক্টে কী হবে। এটি ম্যাপিং প্রক্রিয়াকে আরও নমনীয় এবং কাস্টমাইজড করে তোলে, বিশেষত যখন null মানের প্রভাব ম্যানেজ করা প্রয়োজন।


Content added By
Promotion

Are you sure to start over?

Loading...