Java 14 থেকে শুরু করে records ফিচারটি চালু হয়েছে, যা একটি সংক্ষিপ্ত ডেটা-কেন্দ্রিক ক্লাস তৈরি করার সহজ উপায় প্রদান করে। Jackson লাইব্রেরি স্বাভাবিকভাবেই Java records এর সাথে কাজ করতে পারে, কারণ records এর সকল ফিল্ড final এবং public getter মেথড ব্যবহার করে অ্যাক্সেস করা যায়।
Java Record এর সাথে Jackson Integration
Step 1: Maven Dependency
প্রথমে, Jackson লাইব্রেরি আপনার প্রোজেক্টে যোগ করুন।
<dependency>
<groupId>com.fasterxml.jackson.core</groupId>
<artifactId>jackson-databind</artifactId>
<version>2.15.2</version>
</dependency>
Step 2: Record Definition
নিচে একটি record উদাহরণ দেওয়া হয়েছে, যা একটি Person ডেটা মডেল হিসেবে কাজ করবে:
public record Person(String name, int age, String city) {}
Step 3: JSON Serialization এবং Deserialization
Jackson-এর ObjectMapper ব্যবহার করে আমরা সহজেই JSON ডেটা সিরিয়ালাইজ (Object to JSON) এবং ডেসিরিয়ালাইজ (JSON to Object) করতে পারি।
import com.fasterxml.jackson.databind.ObjectMapper;
public class JacksonWithRecords {
public static void main(String[] args) throws Exception {
ObjectMapper objectMapper = new ObjectMapper();
// Creating a record instance
Person person = new Person("John Doe", 30, "Dhaka");
// Serialize: Java Record to JSON
String json = objectMapper.writeValueAsString(person);
System.out.println("Serialized JSON: " + json);
// Deserialize: JSON to Java Record
String jsonInput = """
{
"name": "Jane Doe",
"age": 25,
"city": "Chittagong"
}
""";
Person deserializedPerson = objectMapper.readValue(jsonInput, Person.class);
System.out.println("Deserialized Record: " + deserializedPerson);
}
}
Output
Serialized JSON
{
"name": "John Doe",
"age": 30,
"city": "Dhaka"
}
Deserialized Record
Deserialized Record: Person[name=Jane Doe, age=25, city=Chittagong]
কাস্টমাইজড Jackson Configuration (Optional)
records এর সাথে যদি ডেটা ফরম্যাট বা ডেসিরিয়ালাইজেশনের সময় কোনো বিশেষ কাস্টমাইজেশন প্রয়োজন হয়, তাহলে @JsonProperty বা অন্যান্য Jackson অ্যানোটেশন ব্যবহার করা যেতে পারে।
Field Aliasing using @JsonProperty
import com.fasterxml.jackson.annotation.JsonProperty;
public record Person(
@JsonProperty("full_name") String name,
@JsonProperty("years_old") int age,
@JsonProperty("home_city") String city
) {}
Input JSON
{
"full_name": "John Doe",
"years_old": 30,
"home_city": "Dhaka"
}
Jackson এই JSON কে Person রেকর্ডে ডেসিরিয়ালাইজ করবে এবং নির্দিষ্ট কাস্টম প্রপার্টি নাম অনুযায়ী ফিল্ডগুলো সেট করবে।
Record Integration সুবিধা
- Immutable Data Handling:
recordsএর ফিল্ডগুলো স্বয়ংক্রিয়ভাবেfinalহয়, যা Immutable ডেটা মডেল তৈরি করে। - Boilerplate Code Removal: Constructor, Getters,
toString,equals, এবংhashCodeস্বয়ংক্রিয়ভাবে জেনারেট হয়। - Natural Compatibility: Jackson স্বাভাবিকভাবেই
recordটাইপ সাপোর্ট করে, অতিরিক্ত কনফিগারেশনের প্রয়োজন নেই।
ব্যবহার ক্ষেত্র
- REST API Models: Immutable ডেটা মডেলের জন্য আদর্শ।
- Microservices Communication: JSON-ভিত্তিক ডেটা আদান-প্রদানে Immutable রেকর্ড ব্যবহার।
- Configuration Objects: Immutable কনফিগারেশন ডেটা সংরক্ষণের জন্য।
Java Records এবং Jackson-এর ইন্টিগ্রেশন অত্যন্ত কার্যকর, বিশেষ করে Immutable এবং Concise ডেটা মডেল তৈরির জন্য। Record-এর সরলতা এবং Jackson-এর শক্তিশালী JSON প্রসেসিং ক্ষমতা একসঙ্গে মিলে JSON ডেটার সাথে কাজ করার একটি সহজ এবং কার্যকর উপায় প্রদান করে।
Read more