MapStruct একটি জনপ্রিয় কোড জেনারেশন টুল যা Java Beans-এর মধ্যে ম্যানুয়াল ট্রান্সফরমেশন কার্যকরভাবে সম্পাদন করে। এটি ডেটা মাপিং কাজটিকে কম্পাইল-টাইমে বাস্তবায়ন করে, ফলে runtime এ পারফরম্যান্সে কোনো ক্ষতি হয় না। মাভেন (Maven) এবং গ্র্যাডল (Gradle) এর মাধ্যমে MapStruct কে আপনার Java প্রোজেক্টে অন্তর্ভুক্ত করা খুবই সহজ।
এই টিউটোরিয়ালে, আমরা দেখব কিভাবে Maven এবং Gradle প্রজেক্টে MapStruct অন্তর্ভুক্ত করা যায়।
১. Maven প্রজেক্টে MapStruct অন্তর্ভুক্ত করা
Maven প্রজেক্টে MapStruct অন্তর্ভুক্ত করার জন্য আপনাকে pom.xml ফাইলে সঠিক ডিপেনডেন্সি এবং অ্যানোটেশন প্রসেসর কনফিগার করতে হবে।
১.১ Maven Dependency Configuration
MapStruct ব্যবহার করার জন্য প্রথমে pom.xml ফাইলে MapStruct এর ডিপেনডেন্সি যোগ করুন:
<dependencies>
<!-- MapStruct Dependency -->
<dependency>
<groupId>org.mapstruct</groupId>
<artifactId>mapstruct</artifactId>
<version>1.5.2.Final</version> <!-- Latest Version -->
</dependency>
</dependencies>
<build>
<plugins>
<!-- MapStruct Processor for Annotation -->
<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একটি অ্যানোটেশন প্রসেসর, যা MapStruct এর জেনারেটেড কোড তৈরির জন্য প্রয়োজনীয়।
১.২ MapStruct Interface উদাহরণ
MapStruct ব্যবহার করার জন্য একটি Mapper Interface তৈরি করতে হবে। এটি আপনার DTO এবং Entity ক্লাসের মধ্যে ডেটা মাপিং সম্পর্কিত নির্দেশনা প্রদান করবে।
import org.mapstruct.Mapper;
import org.mapstruct.factory.Mappers;
@Mapper
public interface PersonMapper {
PersonMapper INSTANCE = Mappers.getMapper(PersonMapper.class);
PersonDTO personToPersonDTO(Person person);
}
এখানে, PersonMapper একটি Mapper Interface যা Person Entity থেকে PersonDTO তে ডেটা ট্রান্সফার করবে। কম্পাইলার MapStruct কে কোড জেনারেট করতে বলে, এবং এটি PersonMapperImpl ক্লাস তৈরি করবে।
১.৩ Maven Build Execution
একবার pom.xml ফাইল কনফিগার হয়ে গেলে, মাভেন বিল্ড চালানোর জন্য নিচের কমান্ডটি ব্যবহার করুন:
mvn clean install
এটি আপনার MapStruct Mapper Interface এর জন্য কোড জেনারেট করবে এবং আপনার প্রোজেক্টে প্রয়োগ করবে।
২. গ্র্যাডল (Gradle) প্রজেক্টে MapStruct অন্তর্ভুক্ত করা
Gradle প্রজেক্টে MapStruct অন্তর্ভুক্ত করার জন্য আপনাকে build.gradle ফাইলে সঠিক ডিপেনডেন্সি এবং প্লাগইন কনফিগার করতে হবে।
২.১ Gradle Dependency Configuration
Gradle প্রোজেক্টে MapStruct অন্তর্ভুক্ত করতে নিম্নলিখিত কনফিগারেশন করুন:
plugins {
id 'java'
}
repositories {
mavenCentral()
}
dependencies {
// MapStruct Dependency
implementation 'org.mapstruct:mapstruct:1.5.2.Final' // Latest Version
// MapStruct Processor Dependency
annotationProcessor 'org.mapstruct:mapstruct-processor:1.5.2.Final'
}
compileJava {
options.annotationProcessorPath = configurations.annotationProcessor
}
এখানে:
mapstructডিপেনডেন্সি এবংmapstruct-processorডিপেনডেন্সি Gradle এর মাধ্যমে অন্তর্ভুক্ত করা হয়েছে।- annotationProcessor কনফিগারেশনটি Gradle এর
compileJavaটাস্কে যুক্ত করা হয়েছে।
২.২ MapStruct Interface উদাহরণ
import org.mapstruct.Mapper;
import org.mapstruct.factory.Mappers;
@Mapper
public interface PersonMapper {
PersonMapper INSTANCE = Mappers.getMapper(PersonMapper.class);
PersonDTO personToPersonDTO(Person person);
}
এখানে, একইভাবে MapStruct Interface তৈরি করা হয়েছে যা Person Entity কে PersonDTO তে ম্যাপ করবে।
২.৩ Gradle Build Execution
Gradle প্রোজেক্টে বিল্ড করার জন্য নিচের কমান্ডটি ব্যবহার করুন:
gradle clean build
এটি MapStruct কোড জেনারেশন করবে এবং প্রোজেক্টে প্রয়োগ করবে।
৩. Maven/Gradle প্রজেক্টে MapStruct ব্যবহার করার সুবিধা
- Compile-time Mapping: MapStruct compile-time ডেটা মাপিং সরবরাহ করে, তাই এটি runtime এর সময় পারফরম্যান্সের উপর কোনো নেতিবাচক প্রভাব ফেলে না।
- Type Safety: MapStruct টাইপ সেফটি নিশ্চিত করে, যার ফলে টাইপ সম্পর্কিত ত্রুটি এড়ানো যায়।
- Fast and Efficient: MapStruct কোড জেনারেট করে এবং reflection ব্যবহার করে না, তাই এটি runtime এ দ্রুত কাজ করে।
- Customizable: আপনি সহজেই কাস্টম কনভার্টার, কাস্টম মেথড এবং অন্যান্য কাস্টম ম্যাপিং লজিক প্রয়োগ করতে পারেন।
সারাংশ
Maven এবং Gradle প্রজেক্টে MapStruct অন্তর্ভুক্ত করা সহজ এবং কার্যকরী। Maven এর মাধ্যমে আপনি pom.xml ফাইলে ডিপেনডেন্সি কনফিগার করে এবং Gradle এর মাধ্যমে build.gradle ফাইলে ডিপেনডেন্সি কনফিগার করে আপনার প্রোজেক্টে MapStruct অন্তর্ভুক্ত করতে পারেন। MapStruct এর মাধ্যমে Java Bean ক্লাসগুলির মধ্যে ডেটা মাপিং কাজটি সহজ, দ্রুত এবং টাইপ সেফ ভাবে সম্পাদিত হয়।
Read more