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 🙂
- Proyecto: https://gorm.io/
- Documentación: https://gorm.io/docs/index.html
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