แนะนำ GORM
สามารถดู video ของหัวข้อนี้ก่อนได้ ดู video
ORM คืออะไร ?
Ref:
- https://docs.mikelopster.dev/blog/orm-express
- https://medium.com/@emccul13/object-relational-mapping-9d84807f5536
Object-Relational Mapping (ORM) คือ programming technique ที่ใช้สำหรับการเปลี่ยน data จากรูปแบบใดๆก็ตามที่อยู่ใน relational database (table, collection) มาสู่รูปแบบ object ของภาษา programming เพื่อสะดวกต่อการจัดการ
ข้อดีของพวก ORM คือ
- Abstraction ทุกคนในทีมสามารถทำงานผ่าน Object แทนได้ (แทนที่จะต้องมาปวดหัวกับ SQL แทน) ซึ่งจะช่วยทำให้ code อ่านง่ายขึ้นมาก
- Database Agnostic สามารถเปลี่ยนไปมาระหว่าง SQL Database ในหลายๆประเภทได้ (ตามที่ ORM support) โดยการปรับเพียงแค่ config เล็กน้อย
- Maintainability ง่ายต่อการอ่าน code มากขึ้น ทำให้ maintain และเข้าใจได้ง่ายขึ้น
- Security ORM ทุกตัวส่วนใหญ่จะทำการเพิ่มการป้องกันผ่านการโจมตี SQL injection ไว้ แล้ว ทำให้เราไม่ต้องกังวลกับเรื่องนี้
รู้จักกับ GORM
ref: https://gorm.io/index.html
GORM คือ ORM library ของภาษา GO ที่จะทำการ convert table ใน relational database มาสู่ Object ฉบับ Go โดยมี feature ตั้งแต่
- Full-Featured ORM
- Associations (has one, has many, belongs to, many to many, polymorphism, single-table inheritance)
- Hooks (before/after create/save/update/delete/find)
- Transactions, Nested Transactions, Save Point, RollbackTo to Saved Point
- Batch Insert, FindInBatches, Find/Create with Map, CRUD with SQL Expr and Context Valuer
- SQL Builder, Upsert, Locking, Optimizer/Index/Comment Hints, Named Argument, SubQuery
- Composite Primary Key, Indexes, Constraints
- Auto Migrations
โดยการลง libray ผ่าน gorm ได้เลย