วันจันทร์ที่ 12 กันยายน พ.ศ. 2554

สวัสดี JAXB ^^

วันนี้ขึ้นหัวข้อมาบางคนอาจจะสงสัยว่ามันคืออะไร  แต่บางคนก็พอจะรู้จักเจ้า JAXB กันมาบ้างแล้ว ซึ่งวันนี้เราจะมาพูดถึงตั้งแต่ความเป็นมาจนกระทั่งมาสอนให้ทำเป็นกันเลยครับ โดยเราจะแบ่งเป็นหัวข้อที่จะพูดคร่าวๆ ดังนี้
-          JAXB คืออะไร ?
-          JAXB มีลักษณะเป็นอย่างไร ?
-          ทำไมต้องใช้ JAXB ?
-          ข้อดี ข้อเสียของการใช้ JAXB ?
-          ตัวอย่างการใช้งาน JAXB
เพื่อไม่ให้เป็นการเสียเวลา เรามาเริ่มทำความรู้จัก JAXB กันเลยดีว่า

JAXB คืออะไร ?
                JAXB (Java Architecture for XML Bindings) คือ พฤติกรรมของชุดมาตรฐานเครื่องมือและอินเตอร์เฟสที่จะสร้างไฟล์คลาสของ Java จาก XML schema  ซึ่ง JAXB เป็นเหมือน Library ของ Java ที่ให้เราสามารถ เก็บข้อมูลของ File XML ในรูปของ Object โดยสามารถ เปลี่ยนไปมาระหว่าง XML กับ Object ซึ่งมีประโยชน์อย่างมากของงานการจัดเก็บข้อมูล นอกจากนั้น JAXB ยังจัดหาวิธีที่สะดวกรวดเร็วในการเชื่อมโยงระหว่าง เอกสาร XML กับจาวาออบเจ็กต์ และ ช่วยให้นักพัฒนาภาษาจาวาใช้ในการเข้าถึงและประมวลผลข้อมูล XML โดยไม่ต้องรู้การประมวลผล XML มาก่อน

JAXB มีลักษณะเป็นอย่างไร ?
บางคนอาจจะงงๆ ว่ามันคืออะไร  แล้วเจ้า JAXB เอาไปอะไรได้  เราจะมาเล่าให้เห็นภาพกันเลยดีกว่า

การทำ JAXB ก็คือการแปลงเอกสาร XML เป็นข้อมูล และการแปลงข้อมูลเป็นเอกสาร XML ซึ่งก่อนที่ทำขั้นตอนที่ว่านี้ได้จะต้องทำโครงสร้าง และกฎของการทำเอกสาร XML กันเสียก่อน  ซึ่งเราจะต้องมีโครงสร้างข้อมูลที่อยู่ในรูป DTD(Document  Type Difination) หรือ Binding Schema ซึ่งจะอยู่ในรูปเอกสาร .xsd เมื่อเราได้เอกสารแล้วเอาเข้าผ่านโปรแกรม Java ของเรา  Java จะทำการสร้างคราส Java  ให้อัตโนมัติ  โดยจะมีอยู่ในรูปของเอกสาร .java  แล้วเมื่อทำการ  compile ก็จะได้เอกสาร .class ที่เก็บข้อมูลแบบไบนารี่  ซึ่งเมื่อโปรแกรมทำงานก็จะใช้การอ้างอิงจากเอกสาร .class  โดยขั้นตอนการทำงานของ JAXB จะพูดประกอบภาพด้านล่างนี้


1.Generate classes : XML schema ถูกนำมาใช้เป็น input เพื่อรวบรวม JAXB กับสร้างคลาส JAXB ขึ้นอยู่กับ schema
2.Compile classes : Compiled คลาสทั้งหมดที่สร้างขึ้น
3.Unmarshal : เอกสาร XML ที่เขียนเป็นข้อตกลงร่วมกันใน schema จะ unmarshalled โดยใช้ JAXB binding framework 
Note JAXB ยังสนับสนุน unmarshalling ข้อมูล XML จากไฟล์ หรือ เอกสารแหล่งอื่น ๆ, DOM, string buffers, SAX Sources ให้ออกมา
4.Generate content tree : กระบวนการทำ unmarshalling เพื่อสร้างต้นไม้ ข้อมูลของวัตถุ ตัวอย่างจากการสร้างคลาส JAXB เช่น  เนื้อหาต้นไม้นี้แสดงถึงโครงสร้าง และเนื้อหาของเอกสาร XML แหล่งที่มา
5.Validate (optional) : กระบวนการทำ unmarshalling เกี่ยวข้องกับการตรวจสอบของแหล่งที่มาของเอกสาร XML ก่อนที่จะสร้างต้นไม้ 
Note  หากคุณปรับเปลี่ยนเนื้อหาของต้นไม้ ในขั้นตอนที่ 6 ด้านล่างนี้คุณยังสามารถใช้ JAXB การตรวจสอบการดำเนินงานในการตรวจสอบการเปลี่ยนแปลงก่อน marshaling contentกลับไปที่เอกสาร XML
6.Process content : client application  สามารถปรับเปลี่ยนข้อมูล XML แสดงโดยJava
content tree โดยวิธีของการเชื่อมต่อที่สร้างขึ้นโดยการเชื่องโยงคอมไพเลอร์
7.Marshal :  การประมวลผล content ต้นไม้ เป็น marshalled ออกไปหนึ่งหรือมากกว่าการส่งออกเอกสารXML content อาจถูกตรวจสอบก่อนที่จะ marshalling

ทำไมต้องใช้ JAXB ?
                บางคนรู้จัก DOM(Document Object Model) หรือ SAX(Simple API for XML) แล้วทำไมจะต้องใช้  JAXB  เราจึงมาพูดถึงข้อแตกต่างระหว่าง JAXB DOM และ SAX และบอกข้อดีข้อเสียของการใช้ JAXB เพื่อให้ผู้อ่านได้พิจารณาถึงเพื่อที่จะเลือกไปใช้   
ความแตกต่างของ JAXB DOM และ SAX
-          JAXB สร้างเป็นระดับที่สูงขึ้นกว่า DOM หรือ SAX
-          DOM แสดงเอกสาร XML เป็นต้นไม้ทั่วไป
-          SAX ที่แสดงถึงเอกสาร XML เป็นกระแสเหตุการณ์ทั่วไป
-          DOM และ JAXB จะทำการผลิตต้นไม้ในหน่วยความจำ
-          DOM จะมองเอกสาร XML ในลักษณะของโครงสร้างต้นไม้ (Tree)
-          SAX จัดการเอกสาร XML ด้วยแนวทาง Event-Driven
-          JAXB parser สามารถดำเนินการได้เร็วกว่า SAX parser ทั่วไป
-          ต้นไม้(tree)ที่สร้างขึ้นโดย JAXB มีขนาดเล็กกว่าต้นไม้(tree)ของ DOM

ข้อดี ข้อเสียของการใช้ JAXB ?
ข้อดี
1.               ใช้ JAXBเพื่อให้มั่นใจว่าXML มีความถูกต้อง
2.               เป็นเรื่องง่ายหากเราจะใช้ต้นไม้ JAXB สำหรับโค้ดเฉพาะของแอพพลิเคชั่น
3.               สามารถปรับเปลี่ยนต้นไม้ได้และสามารถบันทึกไว้เป็น XML ได้
4.               ช่วยให้เราสามารถเก็บค่าของObjectที่ต้องการในรูปแบบของXML
5.               การเก็บข้อมูลในรูปแบบXML มีความยืดหยุ่นสูง
6.               สามารถ อ่านFile XMLแล้วแปลงข้อมูลภายในนั้นออกมาในรูปแบบObject
7.               รูปแบบข้อมูลที่อยู่ในรูปXML สามารถแปลงเป็นObjectได้ไม่ว่าObjectนั้นๆจะมีการเพิ่มหรือลดProperties
8.               สามารถเก็บข้อมูลได้อย่างอิสระไม่จำกัดจำนวนField
9.               แลกเปลี่ยนข้อมูลที่มีชนิดแตกต่างกันได้
10.         สร้างคลาสต่าง ๆ ตามที่กำหนดใน DTD
11.         สร้างตัวแทนออบเจ็กต์ของข้อมูล XML
ข้อเสีย
1.               ต้องทำงานล่วงหน้าเพิ่มเติมเพื่อที่จะบอก JAXB เกี่ยวกับชนิดของต้นไม้ที่ต้องการจะสร้าง
2.               ต้องการความรู้หลายด้านในการใช้งานพอสมควร
3.               ต้องสร้างClass ที่มีโครงสร้างเช่นเดียวกับโครงสร้างในXML Fileเอง
คราวหน้าราจะกลับมาสอนการใช้งานจริงตั้งแต่ขึ้นตอนการทำไฟล์ xsd จนไปถึงการทำไฟล์ XML ออกมาเลยครับ

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

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