প্রথম MapStruct প্রোগ্রাম তৈরি (Hello World)

MapStruct সেটআপ এবং কনফিগারেশন - ম্যাপস্ট্রাক্ট (MapStruct) - Java Technologies

233

MapStruct একটি Java লাইব্রেরি যা ডোমেইন অবজেক্ট থেকে DTO (Data Transfer Object) তে ডেটা ম্যাপিং অটোমেটিকভাবে করতে ব্যবহৃত হয়। এটি কোড জেনারেটর হিসেবে কাজ করে, যার মাধ্যমে আপনি কমপাইল টাইমে দ্রুত এবং নিরাপদভাবে ডেটা কনভার্সন করতে পারেন।

এই টিউটোরিয়ালে আমরা একটি Hello World প্রোগ্রাম তৈরি করবো যেখানে MapStruct ব্যবহার করে দুটি অবজেক্টের মধ্যে ডেটা ম্যাপিং করা হবে।


১. প্রথম MapStruct প্রোগ্রাম তৈরি করার জন্য প্রয়োজনীয় কনফিগারেশন

প্রথমেই, MapStruct ব্যবহার করার জন্য আপনার প্রোজেক্টে প্রয়োজনীয় ডিপেনডেন্সি যোগ করতে হবে। আমরা Maven ব্যবহার করবো, তবে আপনি চাইলে Gradle ব্যবহার করতে পারেন।

১.১ Maven Dependency Configuration

প্রথমে pom.xml ফাইলে MapStruct এর ডিপেনডেন্সি এবং কোড জেনারেটর কনফিগারেশন যোগ করুন:

<dependencies>
    <!-- MapStruct Dependency -->
    <dependency>
        <groupId>org.mapstruct</groupId>
        <artifactId>mapstruct</artifactId>
        <version>1.5.2.Final</version>
    </dependency>

    <!-- MapStruct Processor Dependency (for Code Generation) -->
    <dependency>
        <groupId>org.mapstruct</groupId>
        <artifactId>mapstruct-processor</artifactId>
        <version>1.5.2.Final</version>
        <scope>provided</scope>
    </dependency>
</dependencies>

<build>
    <plugins>
        <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-compiler-plugin</artifactId>
            <version>3.8.1</version>
            <configuration>
                <source>1.8</source>
                <target>1.8</target>
                <annotationProcessorPaths>
                    <path>
                        <groupId>org.mapstruct</groupId>
                        <artifactId>mapstruct-processor</artifactId>
                        <version>1.5.2.Final</version>
                    </path>
                </annotationProcessorPaths>
            </configuration>
        </plugin>
    </plugins>
</build>

এখানে:

  • mapstruct ডিপেনডেন্সি মূল লাইব্রেরি হিসাবে কাজ করবে।
  • mapstruct-processor কোড জেনারেটরের জন্য প্রয়োজনীয় ডিপেনডেন্সি।
  • maven-compiler-plugin এর মাধ্যমে annotationProcessorPaths ব্যবহার করে MapStruct কোড জেনারেট করতে সক্ষম হবে।

২. MapStruct Hello World Example

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

২.১ Person.java (Domain Object)

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

    // Constructor
    public Person(String name, int age) {
        this.name = name;
        this.age = age;
    }

    // Getters and Setters
    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public int getAge() {
        return age;
    }

    public void setAge(int age) {
        this.age = age;
    }
}

এখানে, Person ক্লাসটি আমাদের ডোমেইন অবজেক্ট, যেখানে name এবং age ফিল্ড রয়েছে।

২.২ PersonDTO.java (Data Transfer Object)

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

    // Constructor
    public PersonDTO(String fullName, int age) {
        this.fullName = fullName;
        this.age = age;
    }

    // Getters and Setters
    public String getFullName() {
        return fullName;
    }

    public void setFullName(String fullName) {
        this.fullName = fullName;
    }

    public int getAge() {
        return age;
    }

    public void setAge(int age) {
        this.age = age;
    }
}

এখানে, PersonDTO ক্লাসে fullName এবং age ফিল্ড রয়েছে। লক্ষ্য করুন যে, fullName ফিল্ডে Person ক্লাসের name ফিল্ডটি ম্যাপ করা হবে।

২.৩ PersonMapper.java (Mapper Interface)

এখন আমাদের MapStruct ম্যাপিং ইন্টারফেস তৈরি করতে হবে যেখানে আমরা @Mapper অ্যানোটেশন ব্যবহার করবো।

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

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

    PersonDTO personToPersonDTO(Person person);
}

এখানে:

  • @Mapper: এটি MapStruct কে জানিয়ে দেয় যে এটি একটি ম্যাপিং ইন্টারফেস।
  • personToPersonDTO: এই মেথডটির মাধ্যমে আমরা Person অবজেক্টকে PersonDTO তে ম্যাপ করবো।

২.৪ Main.java (Usage Example)

এখন আমরা Main ক্লাসে ম্যাপিংয়ের উদাহরণ দেখবো:

public class Main {
    public static void main(String[] args) {
        // Creating Person instance
        Person person = new Person("John Doe", 30);

        // Using MapStruct to map Person to PersonDTO
        PersonDTO personDTO = PersonMapper.INSTANCE.personToPersonDTO(person);

        // Print PersonDTO details
        System.out.println("Full Name: " + personDTO.getFullName());
        System.out.println("Age: " + personDTO.getAge());
    }
}

এখানে:

  • Person অবজেক্ট তৈরি করা হয়েছে এবং MapStruct এর মাধ্যমে PersonDTO তে ডেটা ম্যাপ করা হয়েছে।
  • তারপর, PersonDTO এর fullName এবং age ফিল্ডগুলো প্রিন্ট করা হয়েছে।

২.৫ Output:

এই কোডটি রান করলে নিম্নলিখিত আউটপুটটি পাবেন:

Full Name: John Doe
Age: 30

এটি সফলভাবে Person অবজেক্ট থেকে PersonDTO তে ডেটা ম্যাপ করার প্রক্রিয়াটি সম্পন্ন করেছে।


৩. MapStruct এর সুবিধা

  1. Compile-time Code Generation: MapStruct কোড জেনারেট করার জন্য compile-time ব্যবহার করে, যার ফলে রানটাইম পারফরম্যান্সে কোনো সমস্যা হয় না।
  2. Type Safety: MapStruct টাইপ সেফ ম্যাপিং নিশ্চিত করে, অর্থাৎ যদি টাইপ বা ফিল্ডের নামের মধ্যে কোনো ত্রুটি থাকে, তাহলে কম্পাইল টাইমে ত্রুটি দেখানো হবে।
  3. Customization: এটি কাস্টম ম্যাপিং, এক্সপ্রেশন এবং কনভার্সন সমর্থন করে।
  4. Integration with Spring and Other Frameworks: MapStruct Spring ফ্রেমওয়ার্ক এবং অন্যান্য Java ফ্রেমওয়ার্কের সাথে সহজে ইন্টিগ্রেট করা যায়।

সারাংশ

এই টিউটোরিয়ালে আমরা একটি Hello World MapStruct প্রোগ্রাম তৈরি করেছি যেখানে Person অবজেক্ট থেকে PersonDTO তে ডেটা ম্যাপিং করা হয়েছে। MapStruct এর সাহায্যে, আপনি অটোমেটিকভাবে কোড জেনারেট করে Entity এবং DTO এর মধ্যে ম্যাপিং করতে পারেন, যা ডেভেলপমেন্টের সময় এবং প্রচেষ্টা অনেকটা কমিয়ে দেয়। এর মাধ্যমে আপনি কমপ্লেক্স ডেটা ট্রান্সফরমেশন সহজভাবে করতে পারবেন এবং কোডের গুণগত মান উন্নত করতে পারবেন।


Content added By
Promotion

Are you sure to start over?

Loading...