উদাহরণ সহ Ignore এবং Default Value ব্যবহার

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

312

MapStruct হল একটি Java annotation processor ভিত্তিক মডেল ম্যাপিং টুল যা ডোমেইন অবজেক্ট এবং DTO (Data Transfer Object) এর মধ্যে ডেটা ট্রান্সফার করতে ব্যবহৃত হয়। MapStruct আপনাকে বিভিন্ন ম্যাপিং কাস্টমাইজেশন, যেমন Ignore এবং Default Value ব্যবহারের সুযোগ দেয়। এটি বিশেষত তখন ব্যবহারী হয় যখন আপনি কিছু ফিল্ড বা ভ্যালু ম্যাপিং করতে চান না বা ডিফল্ট মান প্রদান করতে চান।

এই টিউটোরিয়ালে আমরা MapStruct এর মাধ্যমে Ignore এবং Default Value এর ব্যবহার দেখব, যা আপনার ম্যাপিং প্রক্রিয়াকে আরও কাস্টমাইজড এবং কার্যকরী করতে সহায়তা করবে।


১. MapStruct এ Ignore ব্যবহার

কিছু ক্ষেত্রে, আপনি চাইবেন না যে একটি নির্দিষ্ট প্রপার্টি বা ফিল্ড ম্যাপিংয়ে অংশগ্রহণ করুক। তখন আপনি @Mapping অ্যানোটেশন ব্যবহার করে সেই ফিল্ডটিকে ignore করতে পারেন। এটি MapStruct কে নির্দেশ দেয় যে সে ওই ফিল্ডটি ম্যাপিং করবে না।

উদাহরণ: Ignore ব্যবহার

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

Person.java:

public class Person {
    private String name;
    private int age;
    
    // Getters and Setters
}

PersonDTO.java:

public class PersonDTO {
    private String name;
    
    // Getters and Setters
}

এখন, age ফিল্ডটি PersonDTO তে না যাওয়ার জন্য আমরা @Mapping অ্যানোটেশন ব্যবহার করব।

PersonMapper.java:

import org.mapstruct.Mapper;
import org.mapstruct.Mapping;
import org.mapstruct.factory.Mappers;

@Mapper
public interface PersonMapper {
    PersonMapper INSTANCE = Mappers.getMapper(PersonMapper.class);

    @Mapping(target = "age", ignore = true) // Ignore the 'age' field
    PersonDTO personToPersonDTO(Person person);
}

এখানে, @Mapping(target = "age", ignore = true) ব্যবহার করে আমরা age ফিল্ডটি PersonDTO তে ম্যাপ হওয়া থেকে আটকাচ্ছি। ফলে, PersonDTO তে age ফিল্ডটি থাকবে না।


২. MapStruct এ Default Value ব্যবহার

কিছু ক্ষেত্রে আপনি চাইবেন যে যদি কোনো ভ্যালু null থাকে বা নির্দিষ্ট কোনো ফিল্ডের জন্য মান না থাকে, তখন একটি default value সেট করা হোক। MapStruct আপনাকে এই কাজটি করতে সাহায্য করে।

উদাহরণ: Default Value ব্যবহার

ধরা যাক, PersonDTO তে age ফিল্ডের জন্য যদি কোনো মান না থাকে, তবে আমরা এটি 0 দিয়ে ডিফল্ট করতে চাই।

Person.java:

public class Person {
    private String name;
    private Integer age; // Integer type to handle null
    
    // Getters and Setters
}

PersonDTO.java:

public class PersonDTO {
    private String name;
    private int age; // Default value 0
    
    // Getters and Setters
}

এখন, MapStruct এর মাধ্যমে আমরা age ফিল্ডের জন্য একটি ডিফল্ট মান দিতে পারি, যখন সেটি null থাকে।

PersonMapper.java:

import org.mapstruct.Mapper;
import org.mapstruct.Mapping;
import org.mapstruct.Mappings;
import org.mapstruct.factory.Mappers;

@Mapper
public interface PersonMapper {
    PersonMapper INSTANCE = Mappers.getMapper(PersonMapper.class);

    @Mapping(target = "age", defaultValue = "0") // Set default value for age
    PersonDTO personToPersonDTO(Person person);
}

এখানে, @Mapping(target = "age", defaultValue = "0") ব্যবহার করে আমরা PersonDTO তে age ফিল্ডের জন্য ডিফল্ট মান 0 সেট করেছি। এর মানে হল যে যদি Person অবজেক্টের age null থাকে, তবে PersonDTO তে age এর মান 0 হবে।


৩. MapStruct এ Ignore এবং Default Value এর ব্যবহার

MapStruct ব্যবহার করার সময় Ignore এবং Default Value এর সাহায্যে আপনি আরো কাস্টম ম্যাপিং করতে পারেন। এটি এমন পরিস্থিতিতে কার্যকর যেখানে কিছু ফিল্ডকে ম্যাপিং থেকে বাদ দিতে হয় বা কোনো ফিল্ডের জন্য ডিফল্ট মান সেট করতে হয়।

উদাহরণ: Ignore এবং Default Value একসাথে ব্যবহার

ধরা যাক, আপনার PersonDTO তে কিছু ফিল্ডকে null বা অনুপস্থিত রাখতে চান এবং কিছু ফিল্ডে ডিফল্ট মান সেট করতে চান।

Person.java:

public class Person {
    private String name;
    private Integer age;
    
    // Getters and Setters
}

PersonDTO.java:

public class PersonDTO {
    private String name;
    private int age = 0;  // Default value 0
    
    // Getters and Setters
}

PersonMapper.java:

import org.mapstruct.Mapper;
import org.mapstruct.Mapping;
import org.mapstruct.factory.Mappers;

@Mapper
public interface PersonMapper {
    PersonMapper INSTANCE = Mappers.getMapper(PersonMapper.class);

    @Mapping(target = "age", defaultValue = "0")  // Default value for age
    @Mapping(target = "name", ignore = true)      // Ignore name field
    PersonDTO personToPersonDTO(Person person);
}

এখানে:

  • name ফিল্ডটি PersonDTO তে ignore করা হয়েছে, অর্থাৎ PersonDTO তে name ফিল্ডটি ম্যাপ হবে না।
  • age ফিল্ডটির জন্য defaultValue ব্যবহার করা হয়েছে, যদি Person অবজেক্টে age null থাকে, তবে সেটি 0 হয়ে যাবে।

৪. MapStruct এ Ignore এবং Default Value এর সুবিধা

  • Ignore ব্যবহার করে আপনি এমন ফিল্ডগুলো বাদ দিতে পারেন যেগুলো ম্যাপিংয়ে অন্তর্ভুক্ত করতে চান না।
  • Default Value ব্যবহার করে আপনি ডিফল্ট মান সেট করতে পারেন, যা বিশেষত null চেক করতে সহায়ক।
  • এই দুটি কৌশল ব্যবহারে আপনি আরও কাস্টমাইজড এবং নির্ভরযোগ্য ম্যাপিং প্রক্রিয়া তৈরি করতে পারেন।

সারাংশ

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


Content added By
Promotion

Are you sure to start over?

Loading...