Java Technologies Lombok এর সাথে MapStruct Integration করা গাইড ও নোট

328

Lombok এবং MapStruct একসাথে ব্যবহৃত হলে, Java কোড লেখার পরিমাণ উল্লেখযোগ্যভাবে কমে যায় এবং আপনি কোডের পঠনযোগ্যতা এবং কার্যকারিতা উন্নত করতে পারেন। Lombok একটি জেনারেটর লাইব্রেরি যা বিভিন্ন সাধারণ Java কোড যেমন getter, setter, constructor, toString() ইত্যাদি অটোমেটিকভাবে তৈরি করে, ফলে কম কোড লিখতে হয়। অন্যদিকে, MapStruct হল একটি annotation processor ভিত্তিক মডেল ম্যাপিং টুল যা compile-time এ কোড জেনারেট করে এবং ডোমেইন অবজেক্টগুলির মধ্যে ম্যাপিং সম্পন্ন করে।

এখানে, আমরা Lombok এবং MapStruct এর ইন্টিগ্রেশন নিয়ে আলোচনা করব এবং দেখব কিভাবে এই দুটি টুল একসাথে কাজ করে।


১. Lombok এবং MapStruct এর প্রয়োজনীয় ডিপেনডেন্সি

প্রথমেই আপনাকে Lombok এবং MapStruct এর জন্য ডিপেনডেন্সি pom.xml বা build.gradle ফাইলে যোগ করতে হবে।

Maven Dependency (pom.xml):

<dependencies>
    <!-- Lombok Dependency -->
    <dependency>
        <groupId>org.projectlombok</groupId>
        <artifactId>lombok</artifactId>
        <version>1.18.22</version>
        <scope>provided</scope>
    </dependency>

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

    <!-- MapStruct Processor Dependency for compile-time 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>

Gradle Dependency:

dependencies {
    // Lombok Dependency
    compileOnly 'org.projectlombok:lombok:1.18.22'
    annotationProcessor 'org.projectlombok:lombok:1.18.22'

    // MapStruct Dependency
    implementation 'org.mapstruct:mapstruct:1.5.2.Final'
    annotationProcessor 'org.mapstruct:mapstruct-processor:1.5.2.Final'
}

এখানে Lombok এবং MapStruct উভয়ের জন্য প্রয়োজনীয় ডিপেনডেন্সি ও প্লাগইন কনফিগার করা হয়েছে।


২. Lombok এর সাথে MapStruct এর ইন্টিগ্রেশন

Lombok এর সাথে MapStruct একত্রিত করতে কিছু বিশেষ টিপস রয়েছে যা নিশ্চিত করবে যে, আপনার কোড সঠিকভাবে কম্পাইল এবং ম্যাপ হয়।

২.১ Getter, Setter এবং Constructor অটোমেটিক্যালি তৈরি করা

Lombok এর @Getter, @Setter, @AllArgsConstructor এবং @NoArgsConstructor অ্যানোটেশন ব্যবহার করে আপনি অবজেক্টে কোড ডুপ্লিকেশন কমাতে পারেন।

Person.java (Domain Object):

import lombok.AllArgsConstructor;
import lombok.Getter;
import lombok.NoArgsConstructor;
import lombok.Setter;

@Getter
@Setter
@AllArgsConstructor
@NoArgsConstructor
public class Person {
    private String name;
    private int age;
}

এখানে @Getter, @Setter, @AllArgsConstructor, এবং @NoArgsConstructor অ্যানোটেশন ব্যবহার করা হয়েছে যা আপনার জন্য getter, setter, এবং কনস্ট্রাক্টর অটোমেটিকভাবে তৈরি করে।

২.২ DTO (Data Transfer Object) ক্লাসে Lombok ব্যবহার

PersonDTO.java (DTO Object):

import lombok.Getter;
import lombok.Setter;

@Getter
@Setter
public class PersonDTO {
    private String name;
    private String ageInString;
}

এখানে, DTO ক্লাসে @Getter এবং @Setter ব্যবহার করা হয়েছে, যা getter এবং setter মেথডগুলি অটোমেটিকভাবে তৈরি করবে।


৩. MapStruct Mapper Interface

MapStruct এর মাধ্যমে Person অবজেক্ট থেকে PersonDTO অবজেক্টে ডেটা ম্যাপিং করার জন্য একটি Mapper Interface তৈরি করা হবে।

PersonMapper.java (MapStruct Mapper Interface):

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

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

    PersonDTO personToPersonDTO(Person person);
}

এখানে, @Mapper অ্যানোটেশন দ্বারা MapStruct এর ম্যাপিং ইন্টারফেস তৈরি করা হয়েছে এবং componentModel = "spring" যুক্ত করা হয়েছে যাতে এটি Spring Bean হিসেবে কাজ করে।


৪. Lombok এবং MapStruct Integration - একটি উদাহরণ

এখন, Lombok এবং MapStruct একসাথে কাজ করার জন্য আমরা Person ডোমেইন অবজেক্টের মধ্যে থেকে ডেটা PersonDTO তে ম্যাপ করব। MapStruct ম্যাপিং কোডটি compile-time এ জেনারেট করবে এবং Lombok ডোমেইন এবং DTO অবজেক্টে অটোমেটিক মেথড তৈরি করবে।

Main.java (Testing the Mapping):

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

public class Main {
    public static void main(String[] args) {
        Person person = new Person("John", 25);
        PersonMapper personMapper = PersonMapper.INSTANCE;

        // Mapping Person to PersonDTO
        PersonDTO personDTO = personMapper.personToPersonDTO(person);
        System.out.println("Name: " + personDTO.getName());
        System.out.println("Age in String: " + personDTO.getAgeInString());
    }
}

এখানে, আমরা Person অবজেক্ট থেকে PersonDTO অবজেক্টে ডেটা ম্যাপ করছি। MapStruct এ কোড জেনারেট করে এবং Lombok দ্বারা getter এবং setter মেথড তৈরি হয়ে যাবে।


৫. Lombok এবং MapStruct এর সুবিধা

  1. Code Reduction: Lombok দিয়ে কোডের প্রয়োজনীয় অংশ যেমন getter, setter, কনস্ট্রাক্টর ইত্যাদি অটোমেটিক্যালি তৈরি হয়, ফলে কোড কম হয়।
  2. Simplified Code Maintenance: MapStruct ব্যবহার করে আপনাকে ম্যাপিং কোড লিখতে হয় না, এটি কোড জেনারেট করে।
  3. Compile-time Code Generation: MapStruct Compile-time এ কোড জেনারেট করে, ফলে রানটাইম পারফরম্যান্স বাড়ে।
  4. Reduced Boilerplate Code: Lombok এর @Getter, @Setter ইত্যাদি অ্যানোটেশন ব্যবহার করে সাধারণ Java কোড কমিয়ে ফেলা যায়।
  5. Easier Spring Integration: MapStruct এর componentModel = "spring" কনফিগারেশনের মাধ্যমে এটি Spring Bean হিসেবে সহজে ব্যবহৃত হতে পারে।

সারাংশ

Lombok এবং MapStruct একত্রে ব্যবহার করলে আপনার Java কোড লেখার প্রক্রিয়া সহজ এবং দ্রুত হয়। Lombok অটোমেটিক্যালি getter, setter, কনস্ট্রাক্টর ইত্যাদি তৈরি করে, ফলে কম কোড লেখা হয়। অন্যদিকে, MapStruct Compile-time এ কোড জেনারেট করে এবং আপনাকে ডোমেইন অবজেক্ট থেকে DTO তে ডেটা ম্যাপ করার জন্য manual কোড লিখতে হয় না। এই দুটি টুল একসাথে ব্যবহার করার মাধ্যমে কোডের জটিলতা কমে এবং উন্নত পারফরম্যান্স পাওয়া যায়।


Content added By
Promotion

Are you sure to start over?

Loading...