วันพฤหัสบดีที่ 15 กันยายน พ.ศ. 2554

JAXB !!!

JAXB คืออะไร?
JAXB (The Java Architecture for XML Binding) เป็นส่วนหนึ่งของ JAX API ใน Java EE เพื่อใช้ในการแปลงไปมาระหว่าง XML Schema กับ โครงสร้างข้อมูลในภาษา Java และ แปลงไปมาระหว่าง XML Document กับ Object ในภาษา Java โดยปัจจุบัน JAXB อยู่ที่ Version 2.0

ทำไมจึงต้องใช้ JAXB?
การใช้งาน XML file เพื่อที่จะทำงานหรือเขียนโปรแกรมร่วมกับภาษา Java นั้นเป็นเรื่องยาก ถ้าจะต้องเขียนโปรแกรมเพื่อดูแลจัดการกับ XMLfile เหล่านั้นหรือทำการแปลง XML file เหล่านั้นให้เป็นโครงสร้างในภาษา Java   JAXB จึงเป็นทางเลือกหนึ่งในการที่จะดูแลจัดการกับ XML file เหล่านั้นเพื่อมาทำงานร่วมกับภาษา Java ได้อย่างง่ายดาย โดยการใช้ JAXB ทำให้สามารถทำงานกับโครงสร้างและเอกสาร XML ได้ โดยไม่ต้องรู้ถึงโครงสร้างและกระบวนการทำงานภายในของ XML file  นอกจากนี้ JAXB ยังมีกระบวนการในการตรวจสอบ (Validation) ซึ่งเป็นกระบวนการที่สำคัญในการทำงานร่วมกับ XML file และทำให้มั่นใจได้มากขึ้นในกระบวนการแปลงไปมาระหว่าง XML กับ Java
JAXB Architecture


JAXB Component ประกอบไปด้วย
             Schema Compiler เป็นกระบวนการที่แปลง Schema ที่ใช้อธิบาย XML หรือข้อมูลของ XML ไปเป็น Java
             Schema Generator ทำการเปลี่ยนข้อมูลจาก Java ให้ไปเป็น Schema
             Binding runtime framework เป็นชุดคำสั่งที่ใช้ในการจัดการกระบวนการ unmarshalling และ marshalling

JAXB Binding Process


- Generate classes : XML Schema จะเป็น input ของกระบวนการในส่วนของ JAXB binding compiler เพื่อที่จะสร้าง JAXB classes โดยมีโครงสร้างตาม Schema ดังกล่าว
- Compile classes : ทุก class ที่ถูกสร้างขึ้น ,ไฟล์ต่างๆ รวมถึง source code ต่างๆ จะถูกนำมา Compile
- Unmarshal : เอกสาร XML ที่ถูกสร้างขึ้นโดยอ้างอิงจากข้อกำหนดใน Schema จะถูกนำมาทำการ unmarshal โดย JAXB Binding framework นอกจากนี้ JAXB ยังสนับสนุนในการทำ unmarshall XML data จากแหล่งข้อมูลอื่นๆนอกจากไฟล์หรือเอกสารต่างๆ เช่น DOM nodes , String buffer , SAX sources เป็นต้น
- Generate content tree : ในการทำ unmarshalling จะมีกระบวนการในการสร้างโครงสร้างต้นไม้สำหรับ object ข้อมูล โดย object เหล่านี้จะถูกสร้างขึ้นจาก JAXB classes ที่กล่าวมาในขั้นตอนที่แล้ว
- Validate (optional) : ในกระบวนการ unmarshalling  ยังสามารถตรวจสอบความถูกต้องของเอกสาร XML ก่อนที่จะนำไปสร้างเป็น content ในขั้นตอนต่อไป โดยหากเรามีการแก้ไข content tree ในขั้นถัดไป เราก็สามารถใช้กระบวนการตรวจสอบดูว่ามีความถูกต้องหรือไม่ ก่อนที่จะแปลง content tree กลับเป็นเอกสาร XML
- Process content : Application ทางฝั่งของ Client สามารถที่จะแก้ไขข้อมูลXML ที่ถูกจัดอยู่ในรูปแบบของโครงสร้างต้นไม้ได้
- Marshal : โครงสร้างต้นไม้ที่ผ่านกระบวนการมานั้นจะได้เป็น เอกสารXMLซึ่งเนื้อหาของเอกสาร จะถูกตรวจสอบก่อนที่จะทำการแปลง


ตัวอย่างประเภทข้อมูลในการแปลง Schema-to-Java
XML Schema Type
Java Data Type
xsd:string
java.lang.String
xsd:integer
java.math.BigInteger
xsd:int
int
xsd:double
double
xsd:time
javax.xml.datatype.XMLGregorianCalendar
xsd:anySimpleType
java.lang.Object  /  java.lang.String

ตัวอย่างประเภทข้อมูลในการแปลง Java-to-Schema
Java Class
XML Data Type
java.lang.String / java.net.URI
xs:string
java.math.BigInteger
xs:integer
java.util.Date / java.util.Calendar
xs:dateTime
java.lang.Object
xs:anyType
javax.xml.datatype.Duration
xs:duration
java.awt.Image
xs:base64Binary

2 ความคิดเห็น:

  1. สมาชิกในกลุ่มมีการเปลี่ยนแปลงเล็กน้อยนะครับ

    1. นางสาวกมลภัทร ปิติปัญญากุล 51050547
    2. นางสาวกัลยาณี ศรีกาญจน์ 51050553
    3. นายชลเดช นิธินันทน์ 51050578
    4. นายชาตการุณ สุขสำราญ 51050579
    5. นางสาวพรรณวดี ศรุติเกรียงไกร 5105062 *Dropวิชานี้ไปแล้วครับ

    6. นายณัฐกิตติ์ ศุภฤทธิ์ 51050584**
    7. นายอิทธิ เครือณรงค์กุล 51050691**
    **ทั้ง 2 คนย้ายมาจากกลุ่ม http://component584.blogspot.com/ ครับ

    ตอบลบ