Marshalling এবং Unmarshalling এর ধারণা

স্প্রিং ওএক্সএম (Spring OXM) - Java Technologies

274

Marshalling এবং Unmarshalling হলো দুটি গুরুত্বপূর্ণ প্রক্রিয়া, যা Object-XML Mapping (OXM) প্রযুক্তির মধ্যে ব্যবহৃত হয়। এই দুটি প্রক্রিয়া Java Objects এবং XML ডেটার মধ্যে রূপান্তরের জন্য ব্যবহৃত হয়। স্প্রিং OXM (Object-XML Mapping) একটি কৌশল যা জাভা অবজেক্টগুলিকে XML ফরম্যাটে রূপান্তর এবং XML থেকে জাভা অবজেক্টে রূপান্তরের জন্য ব্যবহার করা হয়।


Marshalling: জাভা অবজেক্ট থেকে XML এ রূপান্তর

Marshalling হল একটি প্রক্রিয়া যেখানে জাভা অবজেক্টকে XML ফরম্যাটে রূপান্তর করা হয়। এটি XML ডেটাকে একটি জাভা অবজেক্টে রূপান্তরের বিপরীত প্রক্রিয়া (Unmarshalling) এর সাথে সম্পর্কিত। Marshalling সাধারণত যখন XML ফাইল তৈরি বা প্রেরণ করতে হয় তখন ব্যবহৃত হয়।

উদাহরণ:

ধরা যাক, একটি Employee অবজেক্ট আছে এবং এটি XML ফরম্যাটে রূপান্তর করতে চান।

Employee ক্লাস:

import javax.xml.bind.annotation.XmlElement;
import javax.xml.bind.annotation.XmlRootElement;

@XmlRootElement
public class Employee {
    private int id;
    private String name;

    @XmlElement
    public int getId() {
        return id;
    }

    public void setId(int id) {
        this.id = id;
    }

    @XmlElement
    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }
}

Marshalling (জাভা অবজেক্ট থেকে XML):

import org.springframework.oxm.jaxb.Jaxb2Marshaller;
import javax.xml.transform.stream.StreamResult;
import java.io.StringWriter;

public class MarshallingExample {
    public static void main(String[] args) {
        Employee employee = new Employee();
        employee.setId(101);
        employee.setName("John Doe");

        Jaxb2Marshaller marshaller = new Jaxb2Marshaller();
        marshaller.setClassesToBeBound(Employee.class);

        StringWriter writer = new StringWriter();
        marshaller.marshal(employee, new StreamResult(writer));

        System.out.println("XML Output: \n" + writer.toString());
    }
}

এখানে marshaller.marshal() মেথড জাভা অবজেক্ট employee কে XML ফরম্যাটে রূপান্তরিত করে।


Unmarshalling: XML থেকে জাভা অবজেক্টে রূপান্তর

Unmarshalling হল সেই প্রক্রিয়া যেখানে XML ডেটাকে জাভা অবজেক্টে রূপান্তরিত করা হয়। এই প্রক্রিয়ায় XML ডেটা পাঠ্য হিসেবে পড়ে এবং তারপরে জাভা অবজেক্টে কনভার্ট করা হয়।

উদাহরণ:

ধরা যাক, একটি XML ডেটা রয়েছে এবং সেটি জাভা অবজেক্টে রূপান্তর করতে চান।

XML ডেটা (Employee):

<employee>
    <id>101</id>
    <name>John Doe</name>
</employee>

Unmarshalling (XML থেকে জাভা অবজেক্ট):

import org.springframework.oxm.jaxb.Jaxb2Marshaller;
import javax.xml.transform.stream.StreamSource;
import java.io.StringReader;

public class UnmarshallingExample {
    public static void main(String[] args) {
        String xml = "<employee><id>101</id><name>John Doe</name></employee>";

        Jaxb2Marshaller marshaller = new Jaxb2Marshaller();
        marshaller.setClassesToBeBound(Employee.class);

        Employee employee = (Employee) marshaller.unmarshal(new StreamSource(new StringReader(xml)));

        System.out.println("Employee ID: " + employee.getId());
        System.out.println("Employee Name: " + employee.getName());
    }
}

এখানে marshaller.unmarshal() মেথড XML ডেটা থেকে জাভা অবজেক্টে রূপান্তর করে।


Marshalling এবং Unmarshalling এর মধ্যে পার্থক্য

  • Marshalling:
    এটি জাভা অবজেক্টকে XML ফরম্যাটে রূপান্তর করে, যাতে এটি অন্য সিস্টেমে পাঠানো বা সংরক্ষণ করা যেতে পারে।
  • Unmarshalling:
    এটি XML ডেটাকে জাভা অবজেক্টে রূপান্তর করে, যাতে এটি প্রোগ্রামেবল এবং ডেভেলপারদের জন্য ব্যবহৃত হতে পারে।

Spring OXM-এ Marshalling এবং Unmarshalling এর সুবিধা

  1. সহজ রূপান্তর:
    জাভা অবজেক্ট এবং XML ডেটার মধ্যে রূপান্তর স্বয়ংক্রিয়ভাবে এবং দ্রুত করা সম্ভব হয়।
  2. Spring Integration:
    Spring Framework এর সাথে সহজ ইন্টিগ্রেশন সুবিধা প্রদান করে।
  3. XML ডেটার সাথে কাজ করা সহজ:
    XML ফাইলের সাথে কাজ করার সময় কোড কমপ্লেক্সিটি কমে যায়।
  4. বিভিন্ন XML-ম্যাপিং লাইব্রেরি সমর্থন:
    JAXB, Castor, XStream এর মতো বিভিন্ন লাইব্রেরি সমর্থন করা যায়।

Marshalling এবং Unmarshalling Spring OXM এর প্রধান প্রক্রিয়া হিসেবে কাজ করে, যা XML এবং জাভা অবজেক্টের মধ্যে কার্যকর যোগাযোগ এবং ডেটা রূপান্তরের সুবিধা প্রদান করে।

Content added By

Marshalling একটি প্রক্রিয়া যা জাভা অবজেক্ট-কে XML ফরম্যাটে রূপান্তর করার জন্য ব্যবহৃত হয়। এটি একটি গুরুত্বপূর্ণ ধারণা যখন আপনি XML ডেটা স্টোরেজ, ডেটা ট্রান্সফার বা ডিস্ট্রিবিউটেড সিস্টেমে জাভা অবজেক্টগুলোর ব্যবহার করতে চান। স্প্রিং OXM (Object-XML Mapping) এই প্রক্রিয়াটি সহজ করে এবং এটি বিভিন্ন XML-ম্যাপিং লাইব্রেরি (যেমন JAXB, Castor, XStream) ব্যবহার করে।


Marshalling এর ধারণা

Marshalling এর মাধ্যমে আপনি জাভা অবজেক্ট (যেমন: ক্লাস, ইন্টারফেস, ইত্যাদি) কে XML ফরম্যাটে রূপান্তর করতে পারেন। এই প্রক্রিয়াটি XML ফাইল তৈরি করার জন্য প্রয়োজনীয়, বিশেষত যখন ডাটা এক্সচেঞ্জ XML ডেটা ফরম্যাটে হয়।

Marshalling সাধারণত ব্যবহার করা হয়:

  • ডেটা এক্সচেঞ্জ করতে
  • ডেটা সংরক্ষণ করতে
  • ফাইল স্টোরেজ বা রিডিং XML ডেটা করতে

Marshalling কিভাবে কাজ করে?

Marshalling প্রক্রিয়াটি সাধারণত দুটি প্রধান পর্যায়ে কাজ করে:

  1. জাভা অবজেক্টকে XML এ রূপান্তরিত করা
  2. XML ফাইল বা স্ট্রিমে রূপান্তরিত ডেটা লেখা

স্প্রিং OXM-এর মাধ্যমে Marshalling কিভাবে কাজ করে তা বুঝতে উদাহরণ হিসেবে একটি Employee ক্লাস এবং তার XML রূপান্তর দেখতে পারি।


উদাহরণ: Marshalling কিভাবে কাজ করে

১. জাভা ক্লাস তৈরি

ধরা যাক, একটি Employee ক্লাস তৈরি করা হয়েছে, যার কিছু ফিল্ড রয়েছে। এই ক্লাসের ইনস্ট্যান্স XML এ রূপান্তরিত করা হবে।

import javax.xml.bind.annotation.XmlElement;
import javax.xml.bind.annotation.XmlRootElement;

@XmlRootElement
public class Employee {
    private int id;
    private String name;

    // Getter and Setter
    @XmlElement
    public int getId() {
        return id;
    }

    public void setId(int id) {
        this.id = id;
    }

    @XmlElement
    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }
}

এই ক্লাসে @XmlRootElement এবং @XmlElement অ্যানোটেশন ব্যবহৃত হয়েছে, যা JAXB (Java Architecture for XML Binding) লাইব্রেরির মাধ্যমে XML ফরম্যাটে রূপান্তরের জন্য গুরুত্বপূর্ণ।

২. Marshalling কোড

এখন, Employee অবজেক্টকে XML ফরম্যাটে রূপান্তরিত করা হবে।

import org.springframework.oxm.jaxb.Jaxb2Marshaller;
import javax.xml.transform.stream.StreamResult;
import java.io.StringWriter;

public class MarshallingExample {
    public static void main(String[] args) {
        // Employee অবজেক্ট তৈরি করা
        Employee employee = new Employee();
        employee.setId(101);
        employee.setName("John Doe");

        // Jaxb2Marshaller ইনস্ট্যান্স তৈরি করা
        Jaxb2Marshaller marshaller = new Jaxb2Marshaller();
        marshaller.setClassesToBeBound(Employee.class);

        // XML আউটপুট লেখার জন্য StringWriter তৈরি করা
        StringWriter writer = new StringWriter();

        // Marshalling প্রক্রিয়া: Employee অবজেক্টকে XML-এ রূপান্তরিত করা
        marshaller.marshal(employee, new StreamResult(writer));

        // XML আউটপুট প্রিন্ট করা
        System.out.println("XML Output: \n" + writer.toString());
    }
}

৩. আউটপুট:

এই কোডটি Employee অবজেক্টকে XML ফরম্যাটে রূপান্তর করে এবং আউটপুট হিসেবে নিচের XML প্রদান করবে:

<?xml version="1.0" encoding="UTF-8"?>
<employee>
    <id>101</id>
    <name>John Doe</name>
</employee>

এখানে marshaller.marshal() মেথড জাভা অবজেক্ট employee কে XML ফরম্যাটে রূপান্তরিত করেছে এবং এটি StringWriter এ লেখা হয়েছে। পরবর্তীতে এই XML ডেটা স্ট্রিম বা ফাইলে সংরক্ষণ করা যেতে পারে।


Marshalling এর সুবিধা

  1. XML ডেটার সাথে সহজ যোগাযোগ:
    Marshalling এর মাধ্যমে আপনি সহজেই XML ফরম্যাটে ডেটা সংরক্ষণ, প্রেরণ বা গ্রহণ করতে পারেন।
  2. JAXB সমর্থন:
    JAXB এর সাহায্যে এটি সহজেই কাজ করে, যেখানে অ্যানোটেশন ব্যবহার করে XML স্ট্রাকচার কাস্টমাইজ করা যায়।
  3. Spring OXM এর মাধ্যমে ইন্টিগ্রেশন:
    Spring OXM Spring Framework এর সাথে সহজেই কাজ করে, যা ডেভেলপারদের জন্য সুবিধাজনক।
  4. অটোমেটিক রূপান্তর:
    Marshalling প্রক্রিয়াটি পুরোপুরি স্বয়ংক্রিয়, অর্থাৎ কোড কমপ্লেক্সিটি কমে যায় এবং ডেভেলপমেন্ট দ্রুত হয়।

Marshalling একটি অত্যন্ত কার্যকর প্রক্রিয়া, যা Spring OXM ব্যবহার করে XML ডেটা এবং জাভা অবজেক্টের মধ্যে মসৃণ এবং কার্যকর রূপান্তর সম্ভব করে তোলে।

Content added By

Spring OXM কি?

Spring OXM (Object/XML Mapping) হল Spring Framework এর একটি মডিউল যা Java objects এবং XML ডকুমেন্টের মধ্যে ম্যাপিং পরিচালনা করে। এটি XML ডেটা এবং Java objects এর মধ্যে রূপান্তর সহজ করে তোলে। Spring OXM দুটি প্রধান কাজ সম্পাদন করে:

  1. Marshalling - Java objects থেকে XML ডকুমেন্ট তৈরি করা।
  2. Unmarshalling - XML ডকুমেন্ট থেকে Java objects তৈরি করা।

এখানে আমরা "Unmarshalling" এর কাজ এবং প্রক্রিয়া বিস্তারিতভাবে আলোচনা করব।

Unmarshalling কি?

Unmarshalling হলো একটি প্রক্রিয়া যার মাধ্যমে XML ডকুমেন্ট বা ফাইল থেকে ডেটা পার্স করা হয় এবং সেটি Java objects এ রূপান্তরিত হয়। এটি XML ডকুমেন্টের বিভিন্ন এলিমেন্ট থেকে Java beans বা POJO (Plain Old Java Objects) তৈরি করতে ব্যবহৃত হয়। Spring OXM এই প্রক্রিয়াটি সহজ করে তোলে, যাতে XML ডেটাকে Java objects এ কনভার্ট করা যায় এবং অ্যাপ্লিকেশনের মধ্যে ব্যবহৃত হতে পারে।

Unmarshalling এর কাজ

Unmarshalling এর প্রধান কাজ হলো একটি XML ডকুমেন্ট বা স্ট্রিংকে Java objects এ রূপান্তর করা। এই প্রক্রিয়াটি XML ডকুমেন্টের প্রতিটি এলিমেন্ট এবং এর অ্যাট্রিবিউটগুলি Java objects এর ফিল্ডের সাথে ম্যাপ করা হয়। Spring OXM একটি নির্দিষ্ট Marshaller বা Unmarshaller ব্যবহার করে এই কাজটি সম্পন্ন করে।

Unmarshalling প্রক্রিয়া

Spring OXM ব্যবহার করে Unmarshalling প্রক্রিয়া সাধারণত নিম্নলিখিত পদক্ষেপে সম্পন্ন হয়:

১. XML ডকুমেন্ট বা স্ট্রিং পাওয়া

প্রথমে, XML ডেটা সংগ্রহ করতে হবে। এটি একটি ফাইল, HTTP রেসপন্স, বা অন্য কোন উৎস হতে পারে।

২. Marshaller বা Unmarshaller সেটআপ করা

Spring OXM এর মাধ্যমে XML ডেটাকে Java objects এ রূপান্তর করতে Unmarshaller ব্যবহার করা হয়। Unmarshaller সেটআপ করতে Spring OXM বিভিন্ন কনফিগারেশন প্রদান করে, যেমন JAXB (Java Architecture for XML Binding), Castor, XStream ইত্যাদি।

৩. Unmarshaller ব্যবহার করে XML কে Java Object এ রূপান্তর করা

XML ডেটা Unmarshal করতে, Unmarshaller অবজেক্টের মাধ্যমে XML ডকুমেন্টটি Java object এ রূপান্তর করা হয়।

৪. Java Object ব্যবহার করা

XML থেকে Unmarshal করা Java object পরে অ্যাপ্লিকেশনের মধ্যে ব্যবহার করা হয়, যেমন ডেটাবেসে সেভ করা বা কোনো নির্দিষ্ট কার্যক্রম সম্পাদন করা।

Spring OXM ব্যবহার করে Unmarshalling উদাহরণ

ধরা যাক আমাদের কাছে একটি XML ডকুমেন্ট আছে, যেটি একটি Employee ক্লাসের তথ্য ধারণ করছে। নিচে Spring OXM এর মাধ্যমে XML ডকুমেন্ট থেকে Java object তৈরির একটি উদাহরণ দেখানো হলো।

১. Employee POJO (Plain Old Java Object) ক্লাস

প্রথমে, একটি Employee ক্লাস তৈরি করি যা XML ডকুমেন্টের সাথে মিলে যাবে।

@XmlRootElement
public class Employee {
    private String name;
    private int age;

    // getters and setters
}

এখানে @XmlRootElement অ্যানোটেশনটি জানাচ্ছে যে এই ক্লাসটি একটি XML রুট এলিমেন্টের সাথে মেলানো যাবে।

২. Spring OXM কনফিগারেশন

Spring OXM এর মাধ্যমে Unmarshalling করার জন্য আপনাকে একটি Marshaller এবং Unmarshaller কনফিগার করতে হবে। নিচে JAXB ব্যবহার করে কনফিগারেশন দেখানো হলো।

<bean id="marshaller" class="org.springframework.oxm.jaxb.Jaxb2Marshaller">
    <property name="contextPath" value="com.example"/>
</bean>

<bean id="unmarshaller" class="org.springframework.oxm.jaxb.Jaxb2Marshaller">
    <property name="contextPath" value="com.example"/>
</bean>

এখানে, contextPath হল প্যাকেজ নাম যেখানে Employee ক্লাস বা অন্যান্য JAXB ক্লাস রয়েছে।

৩. Unmarshaller ব্যবহার করে XML থেকে Java Object তৈরি করা

এখন XML ডকুমেন্ট থেকে Employee object তৈরির জন্য Unmarshaller ব্যবহার করা হবে। নিচে এর একটি উদাহরণ দেয়া হলো:

import org.springframework.oxm.Unmarshaller;
import org.springframework.oxm.jaxb.Jaxb2Marshaller;
import javax.xml.transform.stream.StreamResult;
import java.io.StringReader;

public class UnmarshalExample {
    public static void main(String[] args) throws Exception {
        String xml = "<employee><name>John Doe</name><age>30</age></employee>";
        
        // Unmarshaller তৈরি করা
        Jaxb2Marshaller marshaller = new Jaxb2Marshaller();
        marshaller.setContextPath("com.example");

        // XML থেকে Java object এ রূপান্তর
        StringReader reader = new StringReader(xml);
        Employee employee = (Employee) marshaller.unmarshal(new StreamResult(reader));

        // Java object ব্যবহৃত
        System.out.println(employee.getName());
        System.out.println(employee.getAge());
    }
}

এই উদাহরণে, XML স্ট্রিংটি Unmarshaller এর মাধ্যমে Employee অবজেক্টে রূপান্তরিত হচ্ছে। আমরা পরে এই Java object এর মেথডগুলো ব্যবহার করতে পারি।

৪. XML ফাইল থেকে Unmarshal করা

XML ফাইল থেকে Unmarshal করার জন্য, আপনি File অবজেক্ট ব্যবহার করতে পারেন।

File file = new File("employee.xml");
Employee employee = (Employee) marshaller.unmarshal(new StreamResult(file));

৫. Spring Context Configuration ব্যবহার করা

Spring Framework এ Spring XML কনফিগারেশন ব্যবহার করে Unmarshaller এবং Marshaller ব্যবহার করা যায়। এখানে Spring Context ফাইলের মধ্যে কনফিগারেশন করা হয়েছে।

<bean id="unmarshaller" class="org.springframework.oxm.jaxb.Jaxb2Marshaller">
    <property name="contextPath" value="com.example"/>
</bean>

<bean id="employeeService" class="com.example.EmployeeService">
    <property name="unmarshaller" ref="unmarshaller"/>
</bean>

সারাংশ

Unmarshalling হল একটি XML ডকুমেন্ট থেকে Java objects তৈরি করার প্রক্রিয়া, যা Spring OXM এর মাধ্যমে সহজে সম্পন্ন করা যায়। Spring OXM বিভিন্ন ধরনের XML ডেটাকে Java objects এ রূপান্তর করার জন্য সমর্থন প্রদান করে এবং এটি XML ডেটার সাথে কাজ করার সময় কোডের পুনরাবৃত্তি কমাতে সাহায্য করে। Unmarshalling এর মাধ্যমে আপনি XML ডেটা পঠনযোগ্য Java objects এ রূপান্তর করতে পারেন, যা পরবর্তী সময়ে অ্যাপ্লিকেশন লজিকের অংশ হিসেবে ব্যবহৃত হতে পারে। Spring OXM এই প্রক্রিয়াটি সহজ, নমনীয় এবং দ্রুত করে তোলে।

Content added By

Spring OXM কি?

Spring OXM (Object XML Mapping) একটি Spring Framework এর উপাদান যা অবজেক্ট এবং XML ডকুমেন্টের মধ্যে ম্যাপিং বা রূপান্তর (marshalling এবং unmarshalling) সরবরাহ করে। এটি Java অবজেক্টগুলিকে XML ফরম্যাটে রূপান্তর (marshalling) এবং XML ডেটাকে Java অবজেক্টে রূপান্তর (unmarshalling) করার প্রক্রিয়া সহজ করে। Spring OXM সাধারণত JAXB (Java Architecture for XML Binding), Castor, XStream বা JaxMe এর মতো লাইব্রেরির মাধ্যমে XML ডেটার সাথে কাজ করে।

Spring OXM এর মূল সুবিধা হলো এটি Java অবজেক্ট এবং XML ফরম্যাটের মধ্যে ম্যাপিং করার জন্য সাধারণ একটি API প্রদান করে, যাতে ডেটা ট্রান্সফার করা সহজ এবং কার্যকর হয়।


Marshalling এবং Unmarshalling

  • Marshalling: একটি অবজেক্টকে XML ফরম্যাটে রূপান্তর করা।
  • Unmarshalling: XML ফরম্যাটের ডেটাকে Java অবজেক্টে রূপান্তর করা।

Spring OXM এ Marshalling এবং Unmarshalling কনফিগার করা

Spring OXM ব্যবহার করে Marshalling এবং Unmarshalling কনফিগার করার জন্য আপনাকে কিছু নির্দিষ্ট পদক্ষেপ অনুসরণ করতে হবে। নিচে এগুলোর কনফিগারেশন প্রক্রিয়া আলোচনা করা হল:


১. Dependency যুক্ত করা

প্রথমেই Spring OXM এর জন্য উপযুক্ত ডিপেনডেন্সি যুক্ত করতে হবে, যাতে এটি JAXB বা অন্য XML ব্যাকএন্ড লাইব্রেরি ব্যবহার করতে পারে।

Maven Dependency (Spring OXM এবং JAXB)

<dependency>
    <groupId>org.springframework</groupId>
    <artifactId>spring-oxm</artifactId>
    <version>5.3.25</version> <!-- আপনার প্রকল্পের জন্য উপযুক্ত সংস্করণ -->
</dependency>

<dependency>
    <groupId>javax.xml.bind</groupId>
    <artifactId>jaxb-api</artifactId>
    <version>2.3.0</version>
</dependency>

এখানে, spring-oxm ডিপেনডেন্সি Spring OXM এর কার্যকারিতা প্রদান করে এবং jaxb-api JAXB এর সাথে ইন্টিগ্রেট করার জন্য ব্যবহৃত হয়।


২. Marshalling এবং Unmarshalling কনফিগারেশন

Spring OXM এ Marshalling এবং Unmarshalling কনফিগার করতে Marshaller এবং Unmarshaller ইন্টারফেস ব্যবহার করা হয়।

১. Marshalling (Object to XML)

Marshalling এ Java অবজেক্টকে XML ফরম্যাটে রূপান্তর করতে Marshaller ব্যবহার করা হয়।

import org.springframework.oxm.jaxb.Jaxb2Marshaller;
import org.springframework.oxm.Marshaller;
import javax.xml.transform.stream.StreamResult;
import java.io.StringWriter;

public class MarshallingExample {
    public static void main(String[] args) throws Exception {
        // JAXB Marshaller তৈরি
        Jaxb2Marshaller marshaller = new Jaxb2Marshaller();
        marshaller.setContextPath("com.example.model");

        // আপনার অবজেক্ট
        User user = new User();
        user.setId(1);
        user.setName("John Doe");

        // XML তে রূপান্তর
        StringWriter writer = new StringWriter();
        marshaller.marshal(user, new StreamResult(writer));

        // রূপান্তরিত XML প্রিন্ট করা
        System.out.println(writer.toString());
    }
}

এখানে Jaxb2Marshaller JAXB মার্শালার ব্যবহার করা হয়েছে, যা com.example.model প্যাকেজে অবস্থিত User ক্লাসের অবজেক্টকে XML এ রূপান্তরিত করবে।

২. Unmarshalling (XML to Object)

Unmarshalling এর মাধ্যমে XML ডেটাকে Java অবজেক্টে রূপান্তর করা হয়। এই প্রক্রিয়ায় Unmarshaller ব্যবহার করা হয়।

import org.springframework.oxm.jaxb.Jaxb2Marshaller;
import org.springframework.oxm.Unmarshaller;
import java.io.StringReader;

public class UnmarshallingExample {
    public static void main(String[] args) throws Exception {
        // JAXB Unmarshaller তৈরি
        Jaxb2Marshaller unmarshaller = new Jaxb2Marshaller();
        unmarshaller.setContextPath("com.example.model");

        // XML স্ট্রিং
        String xml = "<user><id>1</id><name>John Doe</name></user>";

        // XML থেকে অবজেক্টে রূপান্তর
        StringReader reader = new StringReader(xml);
        User user = (User) unmarshaller.unmarshal(new StreamSource(reader));

        // অবজেক্ট প্রিন্ট করা
        System.out.println("User ID: " + user.getId());
        System.out.println("User Name: " + user.getName());
    }
}

এখানে XML স্ট্রিংটি User অবজেক্টে রূপান্তরিত হচ্ছে Jaxb2Marshaller এবং Unmarshaller ব্যবহার করে।


৩. Spring Configuration-এ Marshalling এবং Unmarshalling কনফিগারেশন

Spring অ্যাপ্লিকেশনে Spring OXM কনফিগার করার জন্য Marshaller এবং Unmarshaller Bean হিসেবে কনফিগার করতে হবে।

@Configuration
public class OXMConfig {

    @Bean
    public Marshaller marshaller() {
        Jaxb2Marshaller marshaller = new Jaxb2Marshaller();
        marshaller.setContextPath("com.example.model");
        return marshaller;
    }

    @Bean
    public Unmarshaller unmarshaller() {
        Jaxb2Marshaller unmarshaller = new Jaxb2Marshaller();
        unmarshaller.setContextPath("com.example.model");
        return unmarshaller;
    }
}

এই কনফিগারেশনটি Spring Container-এ Marshaller এবং Unmarshaller Bean প্রদান করবে, যা পরে আপনার সার্ভিস বা ক্লাসে অটোম্যাটিক্যালি ইনজেক্ট করা যেতে পারে।


৪. Spring Integration এ ব্যবহার

Spring OXM এর সাহায্যে আপনি Spring Integration এর সাথে XML ডেটা ট্রান্সফারও করতে পারেন। Spring Integration-এ OXM এর মাধ্যমে XML ডেটা প্রক্রিয়া করতে OXM Marshaller এবং OXM Unmarshaller ইন্টিগ্রেট করা হয়।

@Bean
public IntegrationFlow xmlFlow() {
    return IntegrationFlows.from("inputChannel")
        .transform(marshaller())
        .handle(marshallingTransformer -> {
            // Handle the marshalling transformer
        })
        .get();
}

এখানে marshaller() Bean XML ডেটাকে Java অবজেক্টে রূপান্তর করবে এবং তা পরবর্তী প্রসেসে ব্যবহৃত হবে।


সারাংশ

Spring OXM (Object XML Mapping) একটি শক্তিশালী টুল যা Java অবজেক্টগুলিকে XML ফরম্যাটে রূপান্তর (Marshalling) এবং XML ডেটাকে Java অবজেক্টে রূপান্তর (Unmarshalling) করার সুবিধা প্রদান করে। Spring OXM কনফিগার করতে Marshaller এবং Unmarshaller ব্যবহার করা হয় এবং JAXB লাইব্রেরির মাধ্যমে XML রূপান্তর প্রক্রিয়া সম্পন্ন হয়। Spring OXM এর মাধ্যমে XML ডেটার সঙ্গে সহজ এবং কার্যকরীভাবে কাজ করা সম্ভব হয়, যা ডেটা ইন্টিগ্রেশন এবং ট্রান্সফার প্রক্রিয়াকে অনেক সহজ করে দেয়।

Content added By

Spring OXM (Object/XML Mapping) এর মাধ্যমে আমরা জাভা অবজেক্ট এবং XML ডাটার মধ্যে রূপান্তর বা ম্যাপিং (Mapping) করতে পারি। এই প্রক্রিয়াটিতে দুটি প্রধান কনসেপ্ট রয়েছে: Marshalling এবং Unmarshalling। এখানে আমরা এই দুটি প্রক্রিয়া উদাহরণসহ দেখব।


Marshalling

Marshalling হল জাভা অবজেক্টকে XML ডকুমেন্টে রূপান্তর করার প্রক্রিয়া। এটি XML ডাটা উৎপন্ন (Generate) করার জন্য ব্যবহৃত হয়। Spring OXM এর মাধ্যমে Marshalling করতে, আপনি সাধারণত Marshaller ক্লাস ব্যবহার করবেন।

উদাহরণ

ধরা যাক, আমাদের একটি Person ক্লাস রয়েছে, যার কিছু ফিল্ড আছে। আমরা এটি Marshalling এর মাধ্যমে XML ফরম্যাটে রূপান্তর করতে চাই।

Person.java:

public class Person {
    private String name;
    private int age;

    // Getters and setters
    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public int getAge() {
        return age;
    }

    public void setAge(int age) {
        this.age = age;
    }
}

Spring OXM Marshalling উদাহরণ:

import org.springframework.oxm.jaxb.Jaxb2Marshaller;
import javax.xml.transform.stream.StreamResult;
import java.io.StringWriter;

public class MarshallingExample {
    public static void main(String[] args) throws Exception {
        // Person object তৈরি করা
        Person person = new Person();
        person.setName("John Doe");
        person.setAge(30);

        // JAXB2Marshaller ব্যবহার করা
        Jaxb2Marshaller marshaller = new Jaxb2Marshaller();
        marshaller.setClassesToBeBound(Person.class);

        // XML আউটপুট স্ট্রিম তৈরি করা
        StringWriter writer = new StringWriter();
        marshaller.marshal(person, new StreamResult(writer));

        // XML আউটপুট প্রিন্ট করা
        System.out.println(writer.toString());
    }
}

উৎপন্ন XML আউটপুট:

<?xml version="1.0" encoding="UTF-8"?>
<person>
    <name>John Doe</name>
    <age>30</age>
</person>

এই উদাহরণে, Jaxb2Marshaller ক্লাসটি Person অবজেক্টকে XML ফরম্যাটে রূপান্তর করেছে।


Unmarshalling

Unmarshalling হল XML ডকুমেন্টকে জাভা অবজেক্টে রূপান্তর করার প্রক্রিয়া। এটি XML ডাটা থেকে জাভা অবজেক্ট তৈরি করার জন্য ব্যবহৃত হয়। Spring OXM এর মাধ্যমে Unmarshalling করতে, আপনি সাধারণত Unmarshaller ক্লাস ব্যবহার করবেন।

উদাহরণ

ধরা যাক, আমরা পূর্বে উৎপন্ন XML ডকুমেন্ট থেকে Person অবজেক্ট তৈরি করতে চাই।

Spring OXM Unmarshalling উদাহরণ:

import org.springframework.oxm.jaxb.Jaxb2Marshaller;
import javax.xml.transform.stream.StreamSource;
import java.io.StringReader;

public class UnmarshallingExample {
    public static void main(String[] args) throws Exception {
        // XML স্ট্রিং তৈরি করা
        String xml = "<?xml version=\"1.0\" encoding=\"UTF-8\"?><person><name>John Doe</name><age>30</age></person>";

        // JAXB2Marshaller ব্যবহার করা
        Jaxb2Marshaller unmarshaller = new Jaxb2Marshaller();
        unmarshaller.setClassesToBeBound(Person.class);

        // XML থেকে Person অবজেক্টে রূপান্তর
        StringReader reader = new StringReader(xml);
        Person person = (Person) unmarshaller.unmarshal(new StreamSource(reader));

        // Person অবজেক্টের ডাটা প্রিন্ট করা
        System.out.println("Name: " + person.getName());
        System.out.println("Age: " + person.getAge());
    }
}

আউটপুট:

Name: John Doe
Age: 30

এখানে, Jaxb2Marshaller XML ডাটা থেকে Person অবজেক্ট তৈরি করেছে।


সারাংশ

Spring OXM-এর মাধ্যমে Marshalling এবং Unmarshalling অত্যন্ত সহজ এবং কার্যকরভাবে সম্পাদন করা যায়। Marshalling-এর মাধ্যমে জাভা অবজেক্টকে XML ফরম্যাটে রূপান্তর করা হয় এবং Unmarshalling-এর মাধ্যমে XML ডাটা থেকে জাভা অবজেক্ট তৈরি করা হয়। এর মাধ্যমে ডেভেলপাররা সহজেই XML এবং জাভা অবজেক্টের মধ্যে ডাটা বিনিময় করতে পারে।

Content added By
Promotion

Are you sure to start over?

Loading...