หลังจากที่ได้ทำโปรเจคมาร่วมเทอมกว่า ๆ สิ่งที่ต้องใช้ในการทำโปรเจคเป็นอย่างมากก็คือฐานข้อมูลครับ ซึ่งเมื่อก่อนตอนเรียนมาเราคงจะจำได้ว่าในการเขียนโปรแกรมติดต่อกับฐานข้อมูล เราจะต้องใช้คำสั่ง 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

Leave a Reply