วันอังคารที่ 13 กันยายน พ.ศ. 2554

ทำความรู้จักกับเจ้า JAXB ตอนที่ 1

JAXB คือ อะไร
JAXB ก็คือ สถาปัตยกรรม ที่ช่วยให้สร้างความสดวกสบายให้กับ Deverlopers ในการ แปลงข้อมูลจาก XML ไปเป็น Java ( Unmashalling ) หรือ จาก Java ไปเป็น XML ( Mashalling ) นั่นเอง

JAXB ARCHITECTURE
-------------> Schema to Java
 JAVA to Schema
ภาพแสดงการนำ JAXB ไปใช้งาน

ขั้นตอนการดำเนินงานตาม โครงสร้างดังภาพด้านบน สามารถแบ่งได้ดังนี้
- Schema compiler : เป็นส่วนที่คอยแปลงหรือเชื่อมโยง Source Schema กับกลุ่มของ JAXB Class ที่เป็นโปรแกรมภาษา Java
- Schema generator : เป็นขั้นตอนการจับคู่กลุ่มโปรแกรมที่มีอยู่เพื่อให้ได้ Schema ออกมา
- Binding runtime framework : เป็นการเตรียม unmarshalling และ marshalling เพื่อให้สามารถเข้าถึง จัดการและตรวจสอบเนื้อหาใน XML ด้วยการใช้ schema ที่ได้มาและโปรแกรมที่มีอยู่ได้
The JAXB Binding Process

ภาพแดงการทำงานที่เกิดขึ้นในการสร้างใช้ JAXB

ขั้นตอนในการเชื่อมโยงข้อมูลการทำงานสามารถแบ่งได้ดังนี้
1. Generate classes : XML Schema จะถูกนำมาใช้เป็นตัว Input เพื่อที่จะให้ตัว Complier สร้าง  Class JAXB ที่มาจาก Schema นั้นๆ
2. Compile classes : ทุกๆ Class ที่ถูกสร้างขึ้น Source File ต่างๆและ Code โปรแกรมจะต้องถูก Complier ตรงส่วนนี้
3. Unmarshal: เอกสาร XML ที่เขียนขึ้นตามข้อจำกัดต่างๆใ นthe source schema จะถูก unmarshal โดยJAXB binding framework นอกจากนั้น JAXB ยังสนับสนุนการunmarshal ข้อมูล XML จากข้อมูลอื่นๆเช่น DOM, string buffers, SAX และอื่นๆ
4. Generate content tree : กระบวนการ unmarshal จะสร้างcontent tree ของ Object ที่ได้มาจากการสร้างJAXB classต่างๆซึ่ง content tree นี้จะเป็นตัวแทนโครงสร้างและหัวข้อของเอกสาร XML
JAXB Binding Process
5. Validate (optional) : อยู่ในขั้นตอนการ unmarshal ที่เป็นการตรวจสอบเอกสาร XML ก่อนจะสร้าง content tree ซึ่งถ้ามีการปรับเปลี่ยน content tree ในขั้นตอนที่ 6 ขั้นต่อไปก็จะสามารถใช้การดำเนินการแบบ JAXB Validate เพื่อเป็นเหตุผลในการเปลี่ยนแปลงก่อนจะ marshalcontent กลับไปเป็นเอกสาร XML
6. Process content: Client สามารถเปลี่ยนแปลงข้อมูล XML ที่ถูกแทนด้วย Java content tree โดยความหมายของ interface ต่างๆถูกสร้างโดย binding compiler
7. Marshal: เป็นขั้นตอนที่ content tree ถูก marshal ออกมาเป็นเอกสาร XML เป็น 1 หรือ มากกว่า 1 เอกสาร

Unmarshalling คือ อะไร
คือ การแปลงเอกสาร XML ไปเป็น Java Object
Marshalling คืออะไร
คือ การแปลงจาก Java Object ไปเป็น เอกสาร XML
Validation คือ อะไร
คือ กระบวนการตรวจสอบเอกสาร XML กระบวนการนี้ได้ถูกเพิ่มขึ้นมาในตอนทำ marshal เพื่อที่จะเป็นการยืนยันว่ามันจะไม่ทำให้เอกสาร XMLเกิดความผิดพลาดเมื่อมีการเปลี่ยนแปลงเอกสารในรูปแบบของ JAXB

XML Schema คืออะไร
คือ วิธีการที่จะใช้จำแนกชนิดของเอกสารแบบ XMLโดยจะบอกถึงโครงสร้างและชนิดของข้อมูลในเอกสาร XML แต่ละชนิด
โดยตัว schema เองมีหน้าตาเหมือนเนื้อหา XML ตามปรกติเช่น XML Schema (W3C) และ RELAX NG หรือนิยามขึ้นโดยภาษาพิเศษโดยเฉพาะและเป็นส่วนหนึ่งของ XML เช่น Document Type Definition (DTD) ซึ่งพัฒนาขึ้นก่อนแบบอื่นที่กล่าวมาข้างต้นโดยพัฒนามาจาก SGML โดยมีข้อจำกัดเช่นการไม่รองรับ XML Namespace ( http://th.wikipedia.org/wiki/XML_schema )

XML Schema ต่างๆ
- XML stands for Extensible Markup Language
- XML is a markup language much like HTML
- XML was designed to carry data, not to display data
- XML tags are not predefined. You must define your own tags
- XML is designed to be self-descriptive
- XML is a W3C Recommendation
  Language


Java Representation of XML Schema
JAXB จะสนับสนุนการจัดกลุ่ม เพื่อสร้างเป็น class ใน Java Package   โดยจะประกอบไปด้วย
- ชื่อ Class ที่ได้มาจาก XML element name หรือ ที่กำหนดโดย binding customization
- ObjectFactory class คือ factory ที่ใช้ในการ return instances of a bound Java class



Mapping Schema to Java or Java to Schema
     สำหรับรูปแบบการแปลง Shema เป็น Java นั้น หรือ จาก Java เป็น Schema นั้น สามารถ ศึกษาได้จาก  http://download.oracle.com/javaee/5/tutorial/doc/bnazq.html นะครับ




สำหรับ ทำความรู้จักกับเจ้า JAXB ตอนที่ 1 ก็ขอจบไว้เพียงเท่านี้ก่อนนะครับ ติดตามอ่านตอนต่อไปได้ เร็วๆ นี้ ^^

ไม่มีความคิดเห็น:

แสดงความคิดเห็น