Que es un ORM?

Object-relational mapping (ORM, O / RM y herramienta de mapeo O / R) en informática es una técnica de programación para convertir datos entre sistemas de tipos incompatibles que utilizan lenguajes de programación orientados a objetos. Esto crea, en efecto, una “base de datos de objetos virtuales” que se puede utilizar desde dentro del lenguaje de programación. Hay disponibles paquetes tanto gratuitos como comerciales que realizan mapeo relacional de objetos, aunque algunos programadores optan por construir sus propias herramientas ORM. (from wikipedia)

básicamente un ORM es lo que todos en más de alguna ves en nuestras vidas en el pasado programábamos cuando teníamos que interactuar con una base de datos y no queríamos re-escribir una serie de código para realizar las querys y construíamos una clase con metodos para ejecutar las querys

Que es GORM?

Es un ORM para Go 🙂

Me quiero detener este ejemplo que tiene la documentación que explica casi todo lo necesario para entender como usar GORM:

Quick Start

package main

import (
  "gorm.io/gorm"
  "gorm.io/driver/sqlite"
)

type Product struct {
  gorm.Model
  Code  string
  Price uint
}

func main() {
  db, err := gorm.Open(sqlite.Open("test.db"), &gorm.Config{})
  if err != nil {
    panic("failed to connect database")
  }

  // Migrate the schema
  db.AutoMigrate(&Product{})

  // Create
  db.Create(&Product{Code: "D42", Price: 100})

  // Read
  var product Product
  db.First(&product, 1) // find product with integer primary key
  db.First(&product, "code = ?", "D42") // find product with code D42

  // Update - update product's price to 200
  db.Model(&product).Update("Price", 200)
  // Update - update multiple fields
  db.Model(&product).Updates(Product{Price: 200, Code: "F42"}) // non-zero fields
  db.Model(&product).Updates(map[string]interface{}{"Price": 200, "Code": "F42"})

  // Delete - delete product
  db.Delete(&product, 1)
}

Saludos