MapStruct হলো একটি Java ভিত্তিক ফ্রেমওয়ার্ক যা অটো-ম্যাপিংয়ের জন্য ব্যবহৃত হয়। এটি Java Beans এর মধ্যে ডেটা স্থানান্তর করার জন্য একটি সহজ এবং কার্যকর উপায় প্রদান করে, বিশেষ করে DTO (Data Transfer Object) এবং Entity ক্লাসের মধ্যে। MapStruct অ্যানোটেশন প্রক্রিয়াকরণ ব্যবহার করে কোড তৈরি করে, ফলে এটি runtime এর সময়ে প্রতিক্রিয়া (performance) বাড়ায় এবং কাজের প্রক্রিয়া সহজ করে।
MapStruct হলো একটি Java annotation-based code generation টুল, যা Java Beans বা POJOs (Plain Old Java Objects) এর মধ্যে ম্যাপিং বা ডাটা রূপান্তর সহজ এবং দ্রুত করার জন্য ব্যবহৃত হয়। এটি মূলত দুইটি ক্লাসের মধ্যে ডেটা কপি করার জন্য ব্যবহৃত হয়। উদাহরণস্বরূপ, আপনি যখন একটি DTO (Data Transfer Object) এবং একটি Entity এর মধ্যে ডেটা স্থানান্তর করতে চান, তখন MapStruct ব্যবহার করে সহজেই এক ক্লাস থেকে অন্য ক্লাসে ডেটা কপি করতে পারবেন।
MapStruct কম্পাইল টাইমে কোড জেনারেট করে, যা দ্রুত এবং কার্যকরী ম্যাপিং সরবরাহ করে। এর মাধ্যমে আপনি ম্যানুয়াল কোড লেখার ঝামেলা থেকে মুক্তি পাবেন এবং ম্যাপিং প্রক্রিয়া খুবই সহজ হয়ে যাবে।
ধাপ ১: Maven ডিপেন্ডেন্সি যোগ করা
MapStruct ব্যবহার করার জন্য প্রথমে আপনাকে Maven এর মাধ্যমে এর ডিপেন্ডেন্সি যোগ করতে হবে। নিচের ডিপেন্ডেন্সিগুলো pom.xml ফাইলে যোগ করুন:
<dependency>
<groupId>org.mapstruct</groupId>
<artifactId>mapstruct</artifactId>
<version>1.4.2.Final</version>
</dependency>
<dependency>
<groupId>org.mapstruct</groupId>
<artifactId>mapstruct-processor</artifactId>
<version>1.4.2.Final</version>
<scope>provided</scope>
</dependency>
ধাপ ২: একটি Simple Mapper তৈরি করা
MapStruct এর মাধ্যমে আপনি Mapper Interface তৈরি করতে পারবেন, যা দুটি ক্লাসের মধ্যে ডেটা ম্যাপিং পরিচালনা করবে। উদাহরণস্বরূপ, দুটি ক্লাস PersonDTO এবং PersonEntity এর মধ্যে ম্যাপিং করা যাক:
// PersonDTO.java
public class PersonDTO {
private String name;
private int age;
// Getters and Setters
}
// PersonEntity.java
public class PersonEntity {
private String fullName;
private int age;
// Getters and Setters
}
এখন আমরা PersonDTO এবং PersonEntity এর মধ্যে ডেটা কপি করার জন্য একটি Mapper Interface তৈরি করবো:
import org.mapstruct.Mapper;
import org.mapstruct.Mapping;
import org.mapstruct.factory.Mappers;
@Mapper
public interface PersonMapper {
// Mapper Instance
PersonMapper INSTANCE = Mappers.getMapper(PersonMapper.class);
// DTO থেকে Entity তে ম্যাপিং
@Mapping(source = "name", target = "fullName")
PersonEntity dtoToEntity(PersonDTO dto);
// Entity থেকে DTO তে ম্যাপিং
@Mapping(source = "fullName", target = "name")
PersonDTO entityToDto(PersonEntity entity);
}
উপরের উদাহরণে, আমরা @Mapper এবং @Mapping অ্যানোটেশন ব্যবহার করে ম্যাপিং নিয়ম সংজ্ঞায়িত করেছি। এখানে name প্রোপার্টি PersonDTO থেকে PersonEntity এর fullName এ কপি হবে এবং উল্টো প্রক্রিয়াও সমর্থন করে।
ধাপ ৩: Mapper ব্যবহার করা
এখন আমরা তৈরি করা Mapper Interface ব্যবহার করে ডেটা ম্যাপিং করবো। উদাহরণস্বরূপ:
public class Main {
public static void main(String[] args) {
// DTO অবজেক্ট তৈরি করা
PersonDTO dto = new PersonDTO();
dto.setName("John Doe");
dto.setAge(30);
// DTO থেকে Entity তে ম্যাপিং
PersonEntity entity = PersonMapper.INSTANCE.dtoToEntity(dto);
System.out.println("Entity: " + entity.getFullName() + ", Age: " + entity.getAge());
// Entity থেকে DTO তে ম্যাপিং
PersonDTO mappedDto = PersonMapper.INSTANCE.entityToDto(entity);
System.out.println("DTO: " + mappedDto.getName() + ", Age: " + mappedDto.getAge());
}
}
আউটপুট হবে:
Entity: John Doe, Age: 30
DTO: John Doe, Age: 30
ধাপ ৪: কাস্টম ম্যাপিং
MapStruct এর মাধ্যমে আপনি কাস্টম ম্যাপিং নিয়মও সংজ্ঞায়িত করতে পারেন। উদাহরণস্বরূপ, আপনি যদি কোনো বিশেষ ধরনের কনভার্সন চান, তাহলে আপনি একটি Custom Method ব্যবহার করতে পারেন:
@Mapper
public interface PersonMapper {
@Mapping(source = "name", target = "fullName")
PersonEntity dtoToEntity(PersonDTO dto);
default String mapName(String name) {
return "Mr. " + name;
}
}
এখানে mapName() মেথডটি name এর মান পরিবর্তন করে Mr. যুক্ত করবে।
MapStruct হলো একটি শক্তিশালী এবং ব্যবহারবান্ধব Java Mapping Tool, যা জাভার ক্লাসের মধ্যে ডেটা স্থানান্তর বা ম্যাপিং করার জন্য ব্যবহৃত হয়। এটি কম্পাইল টাইমে কোড জেনারেট করে এবং ম্যাপিং প্রক্রিয়াকে দ্রুত ও কার্যকর করে তোলে। MapStruct এর মাধ্যমে আপনি সহজেই DTO এবং Entity এর মধ্যে ডেটা কপি করতে পারেন এবং কাস্টম ম্যাপিং নিয়মও সংজ্ঞায়িত করতে পারেন। Spring Framework এর সাথে সহজে ইন্টিগ্রেশন করার কারণে এটি Spring ভিত্তিক অ্যাপ্লিকেশন ডেভেলপমেন্টে খুবই কার্যকর।
MapStruct হলো একটি Java ভিত্তিক ফ্রেমওয়ার্ক যা অটো-ম্যাপিংয়ের জন্য ব্যবহৃত হয়। এটি Java Beans এর মধ্যে ডেটা স্থানান্তর করার জন্য একটি সহজ এবং কার্যকর উপায় প্রদান করে, বিশেষ করে DTO (Data Transfer Object) এবং Entity ক্লাসের মধ্যে। MapStruct অ্যানোটেশন প্রক্রিয়াকরণ ব্যবহার করে কোড তৈরি করে, ফলে এটি runtime এর সময়ে প্রতিক্রিয়া (performance) বাড়ায় এবং কাজের প্রক্রিয়া সহজ করে।
MapStruct হলো একটি Java annotation-based code generation টুল, যা Java Beans বা POJOs (Plain Old Java Objects) এর মধ্যে ম্যাপিং বা ডাটা রূপান্তর সহজ এবং দ্রুত করার জন্য ব্যবহৃত হয়। এটি মূলত দুইটি ক্লাসের মধ্যে ডেটা কপি করার জন্য ব্যবহৃত হয়। উদাহরণস্বরূপ, আপনি যখন একটি DTO (Data Transfer Object) এবং একটি Entity এর মধ্যে ডেটা স্থানান্তর করতে চান, তখন MapStruct ব্যবহার করে সহজেই এক ক্লাস থেকে অন্য ক্লাসে ডেটা কপি করতে পারবেন।
MapStruct কম্পাইল টাইমে কোড জেনারেট করে, যা দ্রুত এবং কার্যকরী ম্যাপিং সরবরাহ করে। এর মাধ্যমে আপনি ম্যানুয়াল কোড লেখার ঝামেলা থেকে মুক্তি পাবেন এবং ম্যাপিং প্রক্রিয়া খুবই সহজ হয়ে যাবে।
ধাপ ১: Maven ডিপেন্ডেন্সি যোগ করা
MapStruct ব্যবহার করার জন্য প্রথমে আপনাকে Maven এর মাধ্যমে এর ডিপেন্ডেন্সি যোগ করতে হবে। নিচের ডিপেন্ডেন্সিগুলো pom.xml ফাইলে যোগ করুন:
<dependency>
<groupId>org.mapstruct</groupId>
<artifactId>mapstruct</artifactId>
<version>1.4.2.Final</version>
</dependency>
<dependency>
<groupId>org.mapstruct</groupId>
<artifactId>mapstruct-processor</artifactId>
<version>1.4.2.Final</version>
<scope>provided</scope>
</dependency>
ধাপ ২: একটি Simple Mapper তৈরি করা
MapStruct এর মাধ্যমে আপনি Mapper Interface তৈরি করতে পারবেন, যা দুটি ক্লাসের মধ্যে ডেটা ম্যাপিং পরিচালনা করবে। উদাহরণস্বরূপ, দুটি ক্লাস PersonDTO এবং PersonEntity এর মধ্যে ম্যাপিং করা যাক:
// PersonDTO.java
public class PersonDTO {
private String name;
private int age;
// Getters and Setters
}
// PersonEntity.java
public class PersonEntity {
private String fullName;
private int age;
// Getters and Setters
}
এখন আমরা PersonDTO এবং PersonEntity এর মধ্যে ডেটা কপি করার জন্য একটি Mapper Interface তৈরি করবো:
import org.mapstruct.Mapper;
import org.mapstruct.Mapping;
import org.mapstruct.factory.Mappers;
@Mapper
public interface PersonMapper {
// Mapper Instance
PersonMapper INSTANCE = Mappers.getMapper(PersonMapper.class);
// DTO থেকে Entity তে ম্যাপিং
@Mapping(source = "name", target = "fullName")
PersonEntity dtoToEntity(PersonDTO dto);
// Entity থেকে DTO তে ম্যাপিং
@Mapping(source = "fullName", target = "name")
PersonDTO entityToDto(PersonEntity entity);
}
উপরের উদাহরণে, আমরা @Mapper এবং @Mapping অ্যানোটেশন ব্যবহার করে ম্যাপিং নিয়ম সংজ্ঞায়িত করেছি। এখানে name প্রোপার্টি PersonDTO থেকে PersonEntity এর fullName এ কপি হবে এবং উল্টো প্রক্রিয়াও সমর্থন করে।
ধাপ ৩: Mapper ব্যবহার করা
এখন আমরা তৈরি করা Mapper Interface ব্যবহার করে ডেটা ম্যাপিং করবো। উদাহরণস্বরূপ:
public class Main {
public static void main(String[] args) {
// DTO অবজেক্ট তৈরি করা
PersonDTO dto = new PersonDTO();
dto.setName("John Doe");
dto.setAge(30);
// DTO থেকে Entity তে ম্যাপিং
PersonEntity entity = PersonMapper.INSTANCE.dtoToEntity(dto);
System.out.println("Entity: " + entity.getFullName() + ", Age: " + entity.getAge());
// Entity থেকে DTO তে ম্যাপিং
PersonDTO mappedDto = PersonMapper.INSTANCE.entityToDto(entity);
System.out.println("DTO: " + mappedDto.getName() + ", Age: " + mappedDto.getAge());
}
}
আউটপুট হবে:
Entity: John Doe, Age: 30
DTO: John Doe, Age: 30
ধাপ ৪: কাস্টম ম্যাপিং
MapStruct এর মাধ্যমে আপনি কাস্টম ম্যাপিং নিয়মও সংজ্ঞায়িত করতে পারেন। উদাহরণস্বরূপ, আপনি যদি কোনো বিশেষ ধরনের কনভার্সন চান, তাহলে আপনি একটি Custom Method ব্যবহার করতে পারেন:
@Mapper
public interface PersonMapper {
@Mapping(source = "name", target = "fullName")
PersonEntity dtoToEntity(PersonDTO dto);
default String mapName(String name) {
return "Mr. " + name;
}
}
এখানে mapName() মেথডটি name এর মান পরিবর্তন করে Mr. যুক্ত করবে।
MapStruct হলো একটি শক্তিশালী এবং ব্যবহারবান্ধব Java Mapping Tool, যা জাভার ক্লাসের মধ্যে ডেটা স্থানান্তর বা ম্যাপিং করার জন্য ব্যবহৃত হয়। এটি কম্পাইল টাইমে কোড জেনারেট করে এবং ম্যাপিং প্রক্রিয়াকে দ্রুত ও কার্যকর করে তোলে। MapStruct এর মাধ্যমে আপনি সহজেই DTO এবং Entity এর মধ্যে ডেটা কপি করতে পারেন এবং কাস্টম ম্যাপিং নিয়মও সংজ্ঞায়িত করতে পারেন। Spring Framework এর সাথে সহজে ইন্টিগ্রেশন করার কারণে এটি Spring ভিত্তিক অ্যাপ্লিকেশন ডেভেলপমেন্টে খুবই কার্যকর।
আপনি আমাকে যেকোনো প্রশ্ন করতে পারেন, যেমনঃ
Are you sure to start over?