স্প্রিং ওএক্সএম (Spring OXM) ব্যবহার করে JAXB (Java Architecture for XML Binding) এর মাধ্যমে Object/XML Mapping করার প্রক্রিয়া বেশ সহজ এবং কার্যকর। JAXB হল একটি প্রযুক্তি যা Java অবজেক্টগুলোকে XML ডেটাতে এবং XML ডেটাকে Java অবজেক্টে রূপান্তর করতে ব্যবহৃত হয়।
এখানে আমরা স্প্রিং ওএক্সএমের সাহায্যে JAXB ব্যবহার করে একটি সাধারণ উদাহরণ দেখব, যেখানে একটি Java অবজেক্ট XML এ রূপান্তরিত হবে এবং আবার XML থেকে Java অবজেক্টে রূপান্তর হবে।
পদক্ষেপ ১: Maven পম.xml ফাইল কনফিগারেশন
প্রথমে, আপনার Maven প্রকল্পে Spring OXM এবং JAXB এর জন্য ডিপেনডেন্সি যুক্ত করুন:
<dependencies>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-oxm</artifactId>
<version>5.3.20</version>
</dependency>
<dependency>
<groupId>javax.xml.bind</groupId>
<artifactId>jaxb-api</artifactId>
<version>2.3.0</version>
</dependency>
</dependencies>
পদক্ষেপ ২: Java ক্লাস তৈরি করা
এখন, একটি সাধারণ Java ক্লাস তৈরি করি যা JAXB এর মাধ্যমে XML ম্যাপিং করবে। ধরুন আমাদের একটি Person ক্লাস আছে, যার দুটি ফিল্ড name এবং age।
import javax.xml.bind.annotation.XmlElement;
import javax.xml.bind.annotation.XmlRootElement;
@XmlRootElement
public class Person {
private String name;
private int age;
@XmlElement
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
@XmlElement
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
}
এখানে, @XmlRootElement এবং @XmlElement অ্যানোটেশনগুলি JAXB এর জন্য প্রয়োজনীয়। @XmlRootElement ক্লাসটিকে XML রুট এলিমেন্ট হিসেবে চিহ্নিত করে এবং @XmlElement ফিল্ডগুলিকে XML ট্যাগ হিসেবে নির্দেশ করে।
পদক্ষেপ ৩: Spring OXM JAXB কনফিগারেশন
এখন, Spring OXM কনফিগারেশন তৈরি করা যাক। এর জন্য আমরা একটি Jaxb2Marshaller Bean কনফিগার করব, যা JAXB প্রযুক্তির সাহায্যে Java অবজেক্ট এবং XML এর মধ্যে রূপান্তর করবে।
import org.springframework.oxm.jaxb.Jaxb2Marshaller;
import org.springframework.oxm.Marshaller;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
@Configuration
public class SpringConfig {
@Bean
public Marshaller marshaller() {
Jaxb2Marshaller marshaller = new Jaxb2Marshaller();
marshaller.setContextPath("com.example"); // আপনার package নাম দিন
return marshaller;
}
}
এই কনফিগারেশনে Jaxb2Marshaller এর setContextPath() মেথডে Person ক্লাসের প্যাকেজ নাম উল্লেখ করা হয়েছে। এটি JAXB কে জানায় যে কোন ক্লাসগুলিকে XML এ রূপান্তর করতে হবে।
পদক্ষেপ ৪: XML থেকে Java অবজেক্টে রূপান্তর
এখন, আমরা XML ডেটাকে Java অবজেক্টে রূপান্তর করার জন্য Unmarshaller ব্যবহার করব। নিচে একটি উদাহরণ দেখানো হলো:
import org.springframework.oxm.Marshaller;
import org.springframework.oxm.Unmarshaller;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.context.ApplicationContext;
import org.springframework.context.annotation.AnnotationConfigApplicationContext;
public class XmlToObject {
public static void main(String[] args) throws Exception {
ApplicationContext context = new AnnotationConfigApplicationContext(SpringConfig.class);
Unmarshaller unmarshaller = context.getBean(Unmarshaller.class);
// XML String
String xml = "<person><name>John Doe</name><age>30</age></person>";
// XML থেকে Java অবজেক্টে রূপান্তর
Person person = (Person) unmarshaller.unmarshal(new StringReader(xml));
System.out.println(person.getName()); // Output: John Doe
System.out.println(person.getAge()); // Output: 30
}
}
এখানে, Unmarshaller এর মাধ্যমে XML স্ট্রিংকে Person অবজেক্টে রূপান্তর করা হয়েছে।
পদক্ষেপ ৫: Java অবজেক্ট থেকে XML এ রূপান্তর
এখন, আমরা Java অবজেক্ট থেকে XML এ রূপান্তরের জন্য Marshaller ব্যবহার করব। নিচে একটি উদাহরণ দেখানো হলো:
import org.springframework.oxm.Marshaller;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.context.ApplicationContext;
import org.springframework.context.annotation.AnnotationConfigApplicationContext;
import java.io.StringWriter;
public class ObjectToXml {
public static void main(String[] args) throws Exception {
ApplicationContext context = new AnnotationConfigApplicationContext(SpringConfig.class);
Marshaller marshaller = context.getBean(Marshaller.class);
// Java অবজেক্ট
Person person = new Person();
person.setName("Alice");
person.setAge(25);
// Java অবজেক্ট থেকে XML এ রূপান্তর
StringWriter writer = new StringWriter();
marshaller.marshal(person, new StreamResult(writer));
String xmlOutput = writer.toString();
System.out.println(xmlOutput); // Output: <person><name>Alice</name><age>25</age></person>
}
}
এখানে, Marshaller ব্যবহার করে Person অবজেক্টটিকে XML ফরম্যাটে রূপান্তর করা হয়েছে এবং এর আউটপুট হিসেবে XML স্ট্রিং প্রিন্ট করা হয়েছে।
স্প্রিং ওএক্সএমের মাধ্যমে JAXB ব্যবহার করে Object/XML Mapping করা একটি সহজ এবং কার্যকরী প্রক্রিয়া। এই উদাহরণে আমরা দেখেছি কীভাবে XML থেকে Java অবজেক্টে এবং Java অবজেক্ট থেকে XML এ রূপান্তর করা যায়।
Read more