ข้อดีของ Object-Relational mapping หรือ ORM มีอะไรบ้าง

Tags: ormsql

enter image description here

Object-Relational mapping เรียกย่อๆ ว่า ORM ซึ่งเป็นวิธีการการ map ข้อมูลในรูปแบบตารางฐานข้อมูล ให้มาอยู่ในรูปแบบ object-oriented programming เมื่อจะจัดการกับข้อมูล เราก็ทำผ่าน class ที่ map กับตารางในฐานข้อมูล โดยที่เราไม่ต้องเขียน SQL statement ใดๆ เลย

ตัวอย่าง ORM framework ของ programming language ต่างๆ Entity Framework และ NHibernate สำหรับ .NET platform Hibernate สำหรับ Java Doctrine สำหรับ PHP

ประโยชน์ต่างๆ ที่ได้จากใช้ ORM

  • ช่วยให้เราสร้างระบบแบบ domain driven design ได้สะดวกขึ้น เพราะ ORM ช่วยให้เราออกแบบ model หรือ class ต่างๆ ได้ตรงตาม requirement ของ business โดยที่ไม่ต้องยึดติดกับโครงสร้าง database เพราะ ORM สามารถ map business logic กับ database ได้อย่างอิสระ

  • เมื่อเราออกแบบระบบเป็นแบบ domain driven design เราก็สามารถทำ unit test ได้สะดวกขึ้น สามารถเขียน unit test ทดสอบ business logic ต่างๆ ได้อย่างง่ายและครอบคลุม

  • ช่วยให้ทำงาน CRUD (Create, Read, Update, Delete) ได้อย่างสะดวก ไม่จำเป็นต้องเขียน SQL query เลย เขียน code ในการสร้าง อ่าน แก้ไข ลบข้อมูลใน database ผ่าน C#, Java, PHP ได้เลย

  • การแก้ไข model ทำที่เดียวที่เดียว ไม่จำเป็นต้องไล่ตามแก้ SQL query string find and replace ตามที่ต่างๆ ใน project

  • ช่วยให้เรา query database ด้วย programming language เช่น C#, Java, PHP สำหรับ C# และ Java เราจะได้ประโยชน์จาก compile time check, code refactor, IDE auto complete

  • มี Relationship ระหว่าง parent child ให้เรา navigate relationship ได้สะดวกผ่าน model programming language เช่น properties หรือ list

  • มีความยืดหยุ่นในการ load ข้อมูลจาก database เช่น จะโหลดมาแค่ object เดียว หรือโหลด child object หลายๆ ตัวมาด้วย หรือ lazy load ก็ได้

  • มี built-in การใช้งาน object/record ของ database พร้อมกันของ users หลายๆ คน เช่น optimistic concurrency

  • มี built-in cache ลดการ query ข้อมูลซ้ำโดยไม่จำเป็น เพิ่มประสิทธิภาพให้ application ทำงานได้ไวขึ้น

  • มี transaction management ให้ใช้งาน สามารถ commit/rollback การแก้ไข เปลี่ยนแปลงข้อมูลได้ หรือยกเลิกการแก้ไขได้สะดวก

  • มี primary key management ที่ช่วยให้เราเลือกได้ว่าจะใช้ primary key แบบใด และจะจัดการ assign ค่า primary key ให้ด้วย

  • จะเปลี่ยนไปใช้ RDMS อื่นๆ ก็สะดวก ทำได้ทันที ไม่ต้องมาปรับ SQL query รองรับ RDMS ดังๆ เกือบทั้งหมด MySQL, PostgreSQL, Oracle, MS SQL Server, SQLite ตัวอย่างเช่น ระบบเดิมใช้ MySQL จะปรับไปใช้ SQL Server ก็ทำได้ทำทัน

  • มี function ที่เพิ่มเข้ามาเพื่ออำนวยความสะดวกเช่น pagination, หรือ LINQ to NHibernate, LINQ to EF ที่ช่วยให้เรา query ผ่าน C#/VB.NET programming language

Credit

แปลและปรับปรุงเพิ่มเติมจาก https://devblogs.microsoft.com/gblock/ten-advantages-of-an-orm-object-relational-mapper/

แต่ ORM ก็มีข้อเสียอยู่บ้างเช่นกัน หลักๆ ดังนี้ครับ

  • สร้าง complex query หรือ load data โดยไม่จำเป็น มี performance impact แต่เราสามารถ turning ได้ โดยใช้ SQL profiler tool
  • เมือเราต้องการ complex query หรือทำงานกับ report เราสามารถเขียน SQL query โดยตรงเข้าไปได้ ซึ่งจะเหมาะกว่า แต่การใช้งาน CRUD โดยทั่วไป แนะนำให้ใช้ ORM เป็นหลักครับ
  • เกิด database round trip โดยไม่จำเป็น (n+1) problem จาก Lazy แก้ได้โดย Eager loading
  • Overhead ของการ load พวก mapping configuration ในครั้งแรก ถ้าเป็น web application เช่น Java หรือ .NET เราจะวาง code ส่วนนี้ให้ run ครั้งเดียว ตอน application start up ครับ

สำหรับผู้ที่สนใจเรียนรู้ ORM Entity Framework แบบเข้าใจ และใช้งานได้จริง

ถ้าสนใจเรียนรู้เรื่อง ORM ด้วย Entity Framework ด้วย C# แบบเข้าใจ และนำไปใช้งานจริงได้ ตอนนี้นี้เรามี course "จาก SQL สู่ query แบบ OOP ด้วย Entity Framework และการประยุกต์ใช้ใน ASP.NET MVC/MVC Core"

วัน เวลา สถานที่

วันเสาร์และอาทิตย์ที่ 28, 29 ก.ย. เวลา 9.00 - 18.00 น. ComSci Cafe ติด BTS Bearing

course นี้เหมาะกับใคร

ผู้ที่มีพื้นฐาน C#, Database เช่น MySQL, SQL Server ต้องการเรียนรู้ Entity Framework ORM เพื่อใช้จัดการฐานข้อมูลใน .NET application

ผู้สอน: Theeranit Pongtongmuang (Aaron Amm)

  • Senior software engineer Jetabroad (Thailand) Co., Ltd.
  • Admin Codesanook.com page (More than 9K facebook likes)
  • Programming experiences more than 10 years

Certificates:

  • Microsoft Certificate Trainer (MCT) Microsoft Certificate
  • Professional Developer (ASP.NET Developer) Microsoft Certificate
  • Technology Specialist (.NET Framework, ADO.NET Applications)
  • Microsoft Certificate Technology Specialist (.NET Framework, ASP.NET Applications)

course outline

สามารถสมัครลงเรียนตาม link นี้ได้เลยครับผม

สมัครเรียน Entity Framework ORM กับ Codesanook

enter image description here