"Gorm"
- 10.5 GORM:model、關聯載入與 ORM 送出的 SQL
GORM 的 model 與命名慣例、開著 SQL 記錄寫程式的方式、First 與 Take 的差別與重用變數時多出的條件、找不到資料的判斷、N+1 與 Preload、零值更新被略過、寫入時的預設交易、唯一約束錯誤的判讀,以及 AutoMigrate 在正式環境的限制
- 10.6 GORM 的 gorm.Model、軟刪除與 Save:慣例欄位加上的查詢條件與整列寫回
gorm.Model 帶進來的 ID、CreatedAt、UpdatedAt、DeletedAt 與 UpdatedAt 的更新時機、DeletedAt 讓刪除變成 UPDATE 並替每個查詢加上條件、不經過那個條件的路徑(Raw、其他服務)、軟刪除與關聯載入、外鍵、唯一約束的衝突與部分索引、無條件刪除的保護,以及 Save 寫回全部欄位、找不到主鍵時改成 upsert 而把已刪除的列寫回或恢復
- 10.7 Go 專案的資料庫存取工具選型:GORM、sqlc 與 pgx 的組合
把語言無關的資料存取選型軸套到 Go 的工具上:驅動入口選 pgx 原生介面還是 database/sql、主力選 GORM 還是 sqlc、為什麼用 GORM 與用 sqlc 的專案都把 schema 交給 migration 工具、常見的混用組合、混用時交易能不能共用,以及讀寫分離時 dbresolver 把查詢送到主庫或副本的規則