উদাহরণ সহ Collections এবং Arrays Mapping

Mapping Collections এবং Arrays - ম্যাপস্ট্রাক্ট (MapStruct) - Java Technologies

318

MapStruct একটি শক্তিশালী Java annotation processor যা ডেটা ট্রান্সফার অবজেক্ট (DTO) এবং ডোমেইন অবজেক্টগুলির মধ্যে ম্যাপিং সহজ করে। Collections এবং Arrays এর ম্যাপিং MapStruct এর গুরুত্বপূর্ণ ফিচারগুলোর মধ্যে একটি। এটি কিভাবে List, Set, এবং Array এর মধ্যে ম্যাপিং কার্যকরীভাবে করতে হয়, সেই সম্পর্কে আলোচনা করা হবে।


১. MapStruct এর মাধ্যমে Collections এবং Arrays Mapping এর ধারণা

MapStruct এর মাধ্যমে Collections (List, Set) এবং Arrays এর মধ্যে ম্যাপিং করতে হলে, এটি অটোমেটিকভাবে Collection Type অথবা Array Type এর মান ম্যাপ করে, যেহেতু MapStruct Iterable বা Array এর ডেটাকে হ্যান্ডেল করতে সক্ষম।

  • Collection Mapping: MapStruct লিস্ট বা সেটের মধ্যে থাকা অবজেক্টগুলির প্রতি একটি ম্যাপিং মেথড প্রযোজ্য করে। যেমন, একটি List থেকে List এ ম্যাপিং।
  • Array Mapping: একইভাবে, Arrays এর মধ্যে থাকা অবজেক্টগুলোর ম্যাপিংও করতে পারে।

MapStruct স্বয়ংক্রিয়ভাবে Collections এবং Arrays এর প্রতি ইনডিভিজুয়াল ম্যাপিং মেথড চালায়, যাতে প্রত্যেক উপাদান সঠিকভাবে ম্যাপ হয়।


২. Collections Mapping উদাহরণ

ধরা যাক, আমাদের কাছে একটি Employee ক্লাস এবং একটি EmployeeDTO ক্লাস রয়েছে, এবং আমাদের একটি List এ ম্যাপিং করতে হবে।

Employee.java (Domain Object)

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

    // Getters and Setters
}

EmployeeDTO.java (DTO)

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

    // Getters and Setters
}

EmployeeMapper.java (Mapper Interface)

import org.mapstruct.Mapper;
import org.mapstruct.factory.Mappers;
import java.util.List;

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

    // Mapping a single Employee to EmployeeDTO
    EmployeeDTO employeeToEmployeeDTO(Employee employee);

    // Mapping List of Employee to List of EmployeeDTO
    List<EmployeeDTO> employeesToEmployeeDTOs(List<Employee> employees);
}

এখানে, employeesToEmployeeDTOs মেথডটি List থেকে List এ ম্যাপিং করবে।

Main.java (Usage Example)

import java.util.Arrays;
import java.util.List;

public class Main {
    public static void main(String[] args) {
        // Create a list of Employee objects
        List<Employee> employees = Arrays.asList(
                new Employee("John", 30),
                new Employee("Jane", 25)
        );

        // Map to List of EmployeeDTO
        List<EmployeeDTO> employeeDTOs = EmployeeMapper.INSTANCE.employeesToEmployeeDTOs(employees);

        // Print the EmployeeDTO list
        employeeDTOs.forEach(dto -> System.out.println("Name: " + dto.getName() + ", Age: " + dto.getAge()));
    }
}

Output:

Name: John, Age: 30
Name: Jane, Age: 25

এখানে, List থেকে List এ ম্যাপিং সম্পন্ন হয়েছে।


৩. Set Mapping উদাহরণ

এখন, ধরুন আমাদের একটি Set এর মধ্যে Employee অবজেক্ট এবং আমরা সেটি Set এ ম্যাপ করতে চাই। MapStruct একইভাবে Set এর মধ্যে অবজেক্টগুলির ম্যাপিং করতে পারে।

EmployeeMapper.java (Set Mapping)

import java.util.Set;

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

    // Mapping Set of Employee to Set of EmployeeDTO
    Set<EmployeeDTO> employeesToEmployeeDTOs(Set<Employee> employees);
}

Main.java (Usage Example for Set)

import java.util.HashSet;
import java.util.Set;

public class Main {
    public static void main(String[] args) {
        // Create a set of Employee objects
        Set<Employee> employees = new HashSet<>();
        employees.add(new Employee("John", 30));
        employees.add(new Employee("Jane", 25));

        // Map to Set of EmployeeDTO
        Set<EmployeeDTO> employeeDTOs = EmployeeMapper.INSTANCE.employeesToEmployeeDTOs(employees);

        // Print the EmployeeDTO set
        employeeDTOs.forEach(dto -> System.out.println("Name: " + dto.getName() + ", Age: " + dto.getAge()));
    }
}

Output:

Name: John, Age: 30
Name: Jane, Age: 25

এখানে, Set থেকে Set এ ম্যাপিং হয়েছে।


৪. Array Mapping উদাহরণ

MapStruct Arrays এর মধ্যে থাকা অবজেক্টেরও ম্যাপিং করতে সক্ষম। ধরুন, আমাদের একটি Employee[] (Array) রয়েছে এবং সেটি EmployeeDTO[] এ ম্যাপ করতে চাই।

EmployeeMapper.java (Array Mapping)

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

    // Mapping Employee array to EmployeeDTO array
    EmployeeDTO[] employeesToEmployeeDTOs(Employee[] employees);
}

Main.java (Usage Example for Arrays)

public class Main {
    public static void main(String[] args) {
        // Create an array of Employee objects
        Employee[] employees = {
            new Employee("John", 30),
            new Employee("Jane", 25)
        };

        // Map to EmployeeDTO array
        EmployeeDTO[] employeeDTOs = EmployeeMapper.INSTANCE.employeesToEmployeeDTOs(employees);

        // Print the EmployeeDTO array
        for (EmployeeDTO dto : employeeDTOs) {
            System.out.println("Name: " + dto.getName() + ", Age: " + dto.getAge());
        }
    }
}

Output:

Name: John, Age: 30
Name: Jane, Age: 25

এখানে, Employee[] থেকে EmployeeDTO[] এ ম্যাপিং করা হয়েছে।


৫. Collections এবং Arrays Mapping এর সুবিধা

  • Automatic Mapping: MapStruct collections এবং arrays ম্যাপিংয়ের জন্য অটোমেটিক কোড জেনারেশন করে, তাই আপনি ম্যানুয়ালি কোড লিখতে হয় না।
  • Efficient Mapping: MapStruct এর মাধ্যমে পারফরম্যান্সে কোন পার্থক্য ছাড়াই বিভিন্ন সাইজের collections এবং arrays এর মধ্যে ম্যাপিং করা যায়।
  • Custom Mapping Support: প্রয়োজনে আপনি কাস্টম ম্যাপিং ফাংশন তৈরি করে বিশেষ প্রয়োজনে collections এবং arrays এর মধ্যে ডেটা ট্রান্সফার করতে পারেন।

সারাংশ

MapStruct এর মাধ্যমে Collections (List, Set) এবং Arrays এর মধ্যে ম্যাপিং অত্যন্ত সহজ এবং কার্যকরী। এটি compile-time এ কোড জেনারেট করে এবং প্রতিটি উপাদানকে সঠিকভাবে ম্যাপ করে। এছাড়া, MapStruct ব্যবহার করে collections এবং arrays এর মধ্যে List, Set, এবং Array টাইপের ডেটা ম্যাপিং করা যায়। এর মাধ্যমে, আপনি খুব দ্রুত এবং পারফরম্যান্সে কোনো সমস্যা ছাড়াই ডেটা ট্রান্সফার করতে পারবেন।


Content added By
Promotion

Are you sure to start over?

Loading...