ORM คืออะไร มาทำความรู้จักกันเถอะ

Database

ORM คืออะไร มาทำความรู้จักกันเถอะ

ในบทความนี้เราจะมาเรียนรู้เกี่ยวกับ ORM ว่ามันคืออะไร จะเอามาช่วยในการใช้งาน Database กับ Application ของเราอย่างไร

12 เดือนที่ผ่านมา

1 min read

What is ORM?

Object-Relational Mapping (ORM) เป็นเทคนิคหนึ่งที่ช่วยให้เราสามารถเข้าถึงข้อมูลในฐานข้อมูลได้โดยไม่ต้องเขียน SQL โดยตรง แต่เราจะเข้าถึงข้อมูลผ่าน Object ที่เราสร้างขึ้นมาแทน ซึ่งเราสามารถเข้าถึงข้อมูลได้ผ่านภาษาโปรแกรมที่เราใช้ในการเขียนโปรแกรมได้เลย

ORM Library

แน่นอนว่า ORM มันก็เป็นแค่เทคนิค เราจำเป็นที่จะต้องใช้ Library ในการใช้งาน โดยแต่ละภาษาก็จะมี ORM Library ที่แตกต่างกันออกไป

Example

มาดูตัวอย่างการใช้งาน แบบ pseudo code กัน

อย่างเช่น เรา มี class ชื่อ Book และเราต้องการค้นหาหนังสือทั้งหมดที่เขียนโดย Linus ถ้าเราไม่ได้ใช้ ORM เราจะเขียนโค้ดแบบนี้

book_list = new List();
sql = "SELECT book FROM library WHERE author = 'Linus'";
data = query(sql);
while ((row = data.next())) {
  book = new Book();
  book.setAuthor(row.get("author"));
  book_list.add(book);
}

แต่ถ้าเราใช้ ORM เราจะเขียนโค้ดแบบนี้

book_list = BookTable.query((author = "Linus"));

จะเห็น code สั้นขึ้นและเข้าใจง่ายมาก ๆ

จากนั้น ORM จะทำการแปลงเป็นคำสั่ง SQL ให้เราโดยอัตโนมัติ เพียงแค่นี้ก็ได้ข้อมูลจาก Database ละ

Pros and Cons

ORM ช่วยประหยัดเวลาได้มาก

  • เราเขียน Data Model แค่ครั้งเดียว และง่ายต่อการอัพเดท และการแก้ไข และการนำโค้ดไปใช้ซ้ำ
  • มันทำงานอัตโนมัติ ตั้งแต่การจัดการฐานข้อมูล ไปจนถึง I18N
  • มันบังคับให้เราเขียนโค้ดแบบ MVC ซึ่งทำให้โค้ดสะอาดขึ้น
  • เราไม่ต้องเขียน SQL ที่เขียนไม่ดีอีกต่อไป (ส่วนใหญ่ Web programmer ไม่เก่งเรื่อง SQL เพราะ SQL ถูกจัดการเหมือนภาษาย่อย ๆ ซึ่งในความเป็นจริง SQL เป็นภาษาที่มีความซับซ้อนและมีความสามารถมาก)
  • การใช้ prepared statements หรือการทำ transaction มันง่ายเหมือนการเรียก method

การใช้ ORM จะมีความยืดหยุ่น

  • มันเขียนโค้ดได้ตามธรรมชาติของภาษาที่เราใช้ (เพราะมันเป็นภาษาของเราเอง)
  • มันทำให้เราสามารถเปลี่ยนฐานข้อมูลได้ตามที่เราต้องการ
  • มันทำให้เราสามารถใช้ Model ได้ทุกที่ที่เราต้องการ
  • มันทำให้เราสามารถใช้ OOP ได้เต็มที่ เช่น การสืบทอดข้อมูล โดยไม่ต้องเจอปัญหา

แต่ ORM ก็มีข้อเสียเหมือนกัน

  • เราต้องเรียนรู้มัน และ ORM ไม่ใช่เครื่องมือที่เบา ๆ
  • เราต้องตั้งค่ามัน มันก็เหมือนกับข้อด้านบน
  • ประสิทธิภาพของมันไม่ดีเท่า SQL ที่เราเขียนเอง แต่ก็ยังดีในการใช้งานปกติ
  • มันทำให้เราไม่สามารถเข้าถึงฐานข้อมูลได้โดยตรง ซึ่งมันไม่เป็นไรถ้าเรารู้ว่ามันทำงานอย่างไร แต่มันก็เป็นกับคนที่เพิ่งเริ่มเขียนโปรแกรม

Library

นี่ก็เป็น Library ที่นิยมใช้กัน เลือกตามภาษาที่เราใช้ได้เลย

ถ้าคุณต้องการลองใช้ ORM Library ในการเขียนเว็บ คุณควรจะใช้ Framework ที่มี ORM มาให้เลย เช่น

สุดท้ายนี้ อย่าพยายามที่จะเขียน ORM ของตัวเอง ยกเว้นว่าคุณต้องการเรียนรู้อะไรบางอย่าง นี่เป็นงานที่ใช้เวลาและงานที่ใหญ่มาก ๆ และ ORM ที่เก่ามีการพัฒนามานานแล้วก่อนที่จะเป็นได้มาตรฐานที่ดี

Source

Tags:

ORM Database