หลังจากที่ได้ทำโปรเจคมาร่วมเทอมกว่า ๆ สิ่งที่ต้องใช้ในการทำโปรเจคเป็นอย่างมากก็คือฐานข้อมูลครับ ซึ่งเมื่อก่อนตอนเรียนมาเราคงจะจำได้ว่าในการเขียนโปรแกรมติดต่อกับฐานข้อมูล เราจะต้องใช้คำสั่ง SQL ที่มีความยุ่งยากซับซ้อน ไหนจะต้องโหลดไดรเวอร์, เปิดการเชื่อมต่อ, วนลูปนำผลลัพธ์มาใช้ แต่ว่าเดี๋ยวนี้ (เค้าคงมีกันมานานแล้วแหละ แต่เพิ่งมาศึกษา) เค้ามีเทคโนโลยีที่เข้ามาช่วยจัดการเกี่ยวกับฐานข้อมูล โดยที่เราไม่ต้องไปยุ่งกับฐานข้อมูลมากนัก นั่นก็คือ OR-Mapping ครับ
ส่วน OR-Mapping คืออะไร เรามาติดตามดูต่อกันเลยครับOR-Mapping ย่อมาจาก Object-relational Mapping ครับ ซึ่ง OR-Mapping นี้จะสนับสนุนการเขียนโปรแกรมเชิงวัตถุครับ
เมื่อเราเขียน Object ขึ้นมาในโปรแกรมของเรา แล้วเราต้องการที่จะเก็บข้อมูลของ Object นั้นลงในฐานข้อมูล จากเดิมเราจะต้องดึงข้อมูลจากตัว Object, เขียน SQL ให้บันทึกลงฐานข้อมูล หรือเวลาดึงข้อมูลจากฐานข้อมูล เราก็ต้องเขียน SQL เพื่อดึงข้อมูลออกมา แล้วก็ต้องเอาข้อมูลที่ได้มา เอามาลงใน Object
ตัว OR-Mapping ได้ลดความยุ่งยากซับซ้อนนั้น โดย OR-Mapping จะเป็นตัวจัดการให้เองครับ แค่เราใส่ Object ที่ต้องการให้กับฟังก์ชันของ OR-Mapping มันก็จะจัดการดูให้ ว่าจะต้องสร้างฐานข้อมูลขึ้นมาอย่างไร เก็บข้อมูลให้เหมาะสม เวลาดึงข้อมูลออกมา เราแค่สร้าง Query ที่เหมาะสมให้กับมัน มันก็จะดึงข้อมูลจากฐานข้อมูล แล้วได้ผลลัพธ์ออกมาเป็น Object ให้เรียกใช้ในโปรแกรมของเราได้ทันทีครับ
ไปเปิดเจอในเว็บครับ เขาทดลองเปรียบเทียบกันระหว่างการใช้ OR-Mapping (ในเว็บเขาเรียกว่า Transparent Persistence ครับ เดี๋ยวพูดให้ฟังอีกทีว่าคืออะไร) กับการเรียกใช้ฐานข้อมูลแบบตรง ๆ ครับ (JDBC) ซึ่งเขาทดลองเขียนโปรแกรมที่เกี่ยวข้องกับคลาส 5 คลาส คือ Person, Professor, Student, Course, and LectureRoom ซึ่งเขาก็ได้วาดกราฟเปรียบเทียบออกมาว่า การใช้ฐานข้อมูลแบบตรง ๆ นั้น จะใช้ Code หลายบรรทัดมากกว่า จะทำให้เกิด Development Cost ที่มากกว่าด้วยครับ ซึ่งกราฟตามรูปข้างล่างครับ

จากเว็บเดียวกัน จะมีการอธิบายถึง Transparent Persistence ด้วยครับ เขาบอกว่า Transparent Persistence คือความสามารถที่จะเก็บ Object ลงไปในฐานข้อมูลตรง ๆ ได้เลย (ถ้าตามความเข้าใจส่วนตัวแล้ว คิดว่ามันเหมือนกับเราเก็บข้อมูลได้โดยที่ไม่ต้องไปยุ่งอะไรกับมันมากนัก ให้ความรู้สึกเหมือนกับมันโปร่งใส (สำหรับเรา)) แล้วก็มีภาพอธิบายการทำงานคร่าว ๆ ด้วยครับ ตามนี้

จากภาพข้างบน ถ้าเราดูไปเรื่อย ๆ มันก็พยายามจะอธิบายการทำงานของ OR-Mapping ครับ เราจะเห็นว่าสิ่งที่เพิ่มเติมเข้ามาจากการติดต่อฐานข้อมูลแบบเก่า ๆ คือ Mapping ครับ เมื่อโปรแกรมเรียกใช้งาน Object ที่เก็บอยู่ในฐานข้อมูล ตัว Application ก็จะไปเรียกจาก Mapping ครับ แล้วตัว Mapping ก็จะทำหน้าที่ Query ข้อมูลที่ต้องการ จัดสร้างเป็น Object แล้วส่งกลับมาให้เราครับ
อย่างในตัวอย่าง คลาส Person จะมี Address เป็นของตัวเองหลาย ๆ Address ซึ่งเมื่อ Application เรียก Object ของ Person แล้ว ตัว Mapping จะดึงข้อมูลจากฐานข้อมูล, แปลงเป็น Object แล้วส่งไปที่ Application หากว่ามันจะมี Object ภายในอีก เช่น Address มันก็จะไปดูความสัมพันธ์จากฐานข้อมูล แล้วดึงข้อมูลที่เกี่ยวข้องมาให้เราครับ
คราวหน้าเรามาดูกันนะครับ ว่า Library ของ OR-Mapping ที่มีใช้อยู่ในปัจจุบัน อย่าง TopLink, Hibernate, EclipseLink จะมีรายละเอียดเป็นอย่างไร
ขอบคุณครับสำหรับผู้ที่อ่านจบ ^^
อ้างอิงรูป และข้อมูล จากเว็บไซต์
http://www.service-architecture.com/object-relational-mapping/articles/
Last 5 posts by iPudding
- ต่อเน็ตมือถือ (GPRS/EDGE/3G) โดยใช้ Command Line บน Linux - October 19th, 2009
- Social Network: Friend of Friend (FOAF) - June 30th, 2009
- ปัญหา MySQL กับ Rails 2.3.2 - June 23rd, 2009
- พ้น Y2K แล้ว หมดปัญหาจริงเหรอ? [เพ้อเจ้อแบบแฝงสาระ] - June 7th, 2009
- ใช้ git ภายใต้ Proxy - May 20th, 2009
